objagg 66 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct objagg *objagg; objagg 1013 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c objagg_obj = objagg_obj_get(erp_table->objagg, &key); objagg 1027 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c objagg_obj_put(erp_table->objagg, objagg_obj); objagg 1327 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->objagg = objagg_create(&mlxsw_sp_acl_erp_objagg_ops, objagg 1329 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (IS_ERR(erp_table->objagg)) { objagg 1330 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = PTR_ERR(erp_table->objagg); objagg 1352 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c objagg_destroy(erp_table->objagg); objagg 1390 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c ostats = objagg_stats_get(erp_table->objagg); objagg 1426 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c hints = objagg_hints_get(erp_table->objagg, objagg 19 include/linux/objagg.h struct objagg; objagg 27 include/linux/objagg.h struct objagg_obj *objagg_obj_get(struct objagg *objagg, void *obj); objagg 28 include/linux/objagg.h void objagg_obj_put(struct objagg *objagg, struct objagg_obj *objagg_obj); objagg 29 include/linux/objagg.h struct objagg *objagg_create(const struct objagg_ops *ops, objagg 31 include/linux/objagg.h void objagg_destroy(struct objagg *objagg); objagg 50 include/linux/objagg.h const struct objagg_stats *objagg_stats_get(struct objagg *objagg); objagg 57 include/linux/objagg.h struct objagg_hints *objagg_hints_get(struct objagg *objagg, objagg 5 include/trace/events/objagg.h #define TRACE_SYSTEM objagg objagg 12 include/trace/events/objagg.h struct objagg; objagg 16 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg), objagg 18 include/trace/events/objagg.h TP_ARGS(objagg), objagg 21 include/trace/events/objagg.h __field(const void *, objagg) objagg 25 include/trace/events/objagg.h __entry->objagg = objagg; objagg 28 include/trace/events/objagg.h TP_printk("objagg %p", __entry->objagg) objagg 32 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg), objagg 34 include/trace/events/objagg.h TP_ARGS(objagg), objagg 37 include/trace/events/objagg.h __field(const void *, objagg) objagg 41 include/trace/events/objagg.h __entry->objagg = objagg; objagg 44 include/trace/events/objagg.h TP_printk("objagg %p", __entry->objagg) objagg 48 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 51 include/trace/events/objagg.h TP_ARGS(objagg, obj), objagg 54 include/trace/events/objagg.h __field(const void *, objagg) objagg 59 include/trace/events/objagg.h __entry->objagg = objagg; objagg 63 include/trace/events/objagg.h TP_printk("objagg %p, obj %p", __entry->objagg, __entry->obj) objagg 67 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 70 include/trace/events/objagg.h TP_ARGS(objagg, obj), objagg 73 include/trace/events/objagg.h __field(const void *, objagg) objagg 78 include/trace/events/objagg.h __entry->objagg = objagg; objagg 82 include/trace/events/objagg.h TP_printk("objagg %p, obj %p", __entry->objagg, __entry->obj) objagg 86 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 90 include/trace/events/objagg.h TP_ARGS(objagg, obj, refcount), objagg 93 include/trace/events/objagg.h __field(const void *, objagg) objagg 99 include/trace/events/objagg.h __entry->objagg = objagg; objagg 105 include/trace/events/objagg.h __entry->objagg, __entry->obj, __entry->refcount) objagg 109 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 113 include/trace/events/objagg.h TP_ARGS(objagg, obj, refcount), objagg 116 include/trace/events/objagg.h __field(const void *, objagg) objagg 122 include/trace/events/objagg.h __entry->objagg = objagg; objagg 128 include/trace/events/objagg.h __entry->objagg, __entry->obj, __entry->refcount) objagg 132 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 137 include/trace/events/objagg.h TP_ARGS(objagg, obj, parent, parent_refcount), objagg 140 include/trace/events/objagg.h __field(const void *, objagg) objagg 147 include/trace/events/objagg.h __entry->objagg = objagg; objagg 154 include/trace/events/objagg.h __entry->objagg, __entry->obj, objagg 159 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 164 include/trace/events/objagg.h TP_ARGS(objagg, obj, parent, parent_refcount), objagg 167 include/trace/events/objagg.h __field(const void *, objagg) objagg 174 include/trace/events/objagg.h __entry->objagg = objagg; objagg 181 include/trace/events/objagg.h __entry->objagg, __entry->obj, objagg 186 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 189 include/trace/events/objagg.h TP_ARGS(objagg, obj), objagg 192 include/trace/events/objagg.h __field(const void *, objagg) objagg 197 include/trace/events/objagg.h __entry->objagg = objagg; objagg 202 include/trace/events/objagg.h __entry->objagg, __entry->obj) objagg 206 include/trace/events/objagg.h TP_PROTO(const struct objagg *objagg, objagg 209 include/trace/events/objagg.h TP_ARGS(objagg, obj), objagg 212 include/trace/events/objagg.h __field(const void *, objagg) objagg 217 include/trace/events/objagg.h __entry->objagg = objagg; objagg 222 include/trace/events/objagg.h __entry->objagg, __entry->obj) objagg 158 lib/objagg.c static struct objagg_obj *objagg_obj_lookup(struct objagg *objagg, void *obj) objagg 160 lib/objagg.c return rhashtable_lookup_fast(&objagg->obj_ht, obj, objagg->ht_params); objagg 163 lib/objagg.c static int objagg_obj_parent_assign(struct objagg *objagg, objagg 170 lib/objagg.c delta_priv = objagg->ops->delta_create(objagg->priv, parent->obj, objagg 182 lib/objagg.c trace_objagg_obj_parent_assign(objagg, objagg_obj, objagg 188 lib/objagg.c static int objagg_obj_parent_lookup_assign(struct objagg *objagg, objagg 194 lib/objagg.c list_for_each_entry(objagg_obj_cur, &objagg->obj_list, list) { objagg 200 lib/objagg.c err = objagg_obj_parent_assign(objagg, objagg_obj, objagg 208 lib/objagg.c static void __objagg_obj_put(struct objagg *objagg, objagg 211 lib/objagg.c static void objagg_obj_parent_unassign(struct objagg *objagg, objagg 214 lib/objagg.c trace_objagg_obj_parent_unassign(objagg, objagg_obj, objagg 217 lib/objagg.c objagg->ops->delta_destroy(objagg->priv, objagg_obj->delta_priv); objagg 218 lib/objagg.c __objagg_obj_put(objagg, objagg_obj->parent); objagg 221 lib/objagg.c static int objagg_obj_root_id_alloc(struct objagg *objagg, objagg 229 lib/objagg.c if (!objagg->hints) { objagg 241 lib/objagg.c min = objagg->hints->root_count; objagg 245 lib/objagg.c root_id = ida_alloc_range(&objagg->root_ida, min, max, GFP_KERNEL); objagg 253 lib/objagg.c static void objagg_obj_root_id_free(struct objagg *objagg, objagg 256 lib/objagg.c if (!objagg->hints) objagg 258 lib/objagg.c ida_free(&objagg->root_ida, objagg_obj->root_id); objagg 261 lib/objagg.c static int objagg_obj_root_create(struct objagg *objagg, objagg 267 lib/objagg.c err = objagg_obj_root_id_alloc(objagg, objagg_obj, hnode); objagg 270 lib/objagg.c objagg_obj->root_priv = objagg->ops->root_create(objagg->priv, objagg 277 lib/objagg.c trace_objagg_obj_root_create(objagg, objagg_obj); objagg 281 lib/objagg.c objagg_obj_root_id_free(objagg, objagg_obj); objagg 285 lib/objagg.c static void objagg_obj_root_destroy(struct objagg *objagg, objagg 288 lib/objagg.c trace_objagg_obj_root_destroy(objagg, objagg_obj); objagg 289 lib/objagg.c objagg->ops->root_destroy(objagg->priv, objagg_obj->root_priv); objagg 290 lib/objagg.c objagg_obj_root_id_free(objagg, objagg_obj); objagg 293 lib/objagg.c static struct objagg_obj *__objagg_obj_get(struct objagg *objagg, void *obj); objagg 295 lib/objagg.c static int objagg_obj_init_with_hints(struct objagg *objagg, objagg 303 lib/objagg.c hnode = objagg_hints_lookup(objagg->hints, objagg_obj->obj); objagg 311 lib/objagg.c return objagg_obj_root_create(objagg, objagg_obj, hnode); objagg 313 lib/objagg.c parent = __objagg_obj_get(objagg, hnode->parent->obj); objagg 317 lib/objagg.c err = objagg_obj_parent_assign(objagg, objagg_obj, parent, false); objagg 327 lib/objagg.c objagg_obj_put(objagg, parent); objagg 331 lib/objagg.c static int objagg_obj_init(struct objagg *objagg, objagg 340 lib/objagg.c err = objagg_obj_init_with_hints(objagg, objagg_obj, &hint_found); objagg 348 lib/objagg.c err = objagg_obj_parent_lookup_assign(objagg, objagg_obj); objagg 352 lib/objagg.c return objagg_obj_root_create(objagg, objagg_obj, NULL); objagg 355 lib/objagg.c static void objagg_obj_fini(struct objagg *objagg, objagg 359 lib/objagg.c objagg_obj_parent_unassign(objagg, objagg_obj); objagg 361 lib/objagg.c objagg_obj_root_destroy(objagg, objagg_obj); objagg 364 lib/objagg.c static struct objagg_obj *objagg_obj_create(struct objagg *objagg, void *obj) objagg 369 lib/objagg.c objagg_obj = kzalloc(sizeof(*objagg_obj) + objagg->ops->obj_size, objagg 374 lib/objagg.c memcpy(objagg_obj->obj, obj, objagg->ops->obj_size); objagg 376 lib/objagg.c err = objagg_obj_init(objagg, objagg_obj); objagg 380 lib/objagg.c err = rhashtable_insert_fast(&objagg->obj_ht, &objagg_obj->ht_node, objagg 381 lib/objagg.c objagg->ht_params); objagg 384 lib/objagg.c list_add(&objagg_obj->list, &objagg->obj_list); objagg 385 lib/objagg.c objagg->obj_count++; objagg 386 lib/objagg.c trace_objagg_obj_create(objagg, objagg_obj); objagg 391 lib/objagg.c objagg_obj_fini(objagg, objagg_obj); objagg 397 lib/objagg.c static struct objagg_obj *__objagg_obj_get(struct objagg *objagg, void *obj) objagg 404 lib/objagg.c objagg_obj = objagg_obj_lookup(objagg, obj); objagg 410 lib/objagg.c return objagg_obj_create(objagg, obj); objagg 437 lib/objagg.c struct objagg_obj *objagg_obj_get(struct objagg *objagg, void *obj) objagg 441 lib/objagg.c objagg_obj = __objagg_obj_get(objagg, obj); objagg 445 lib/objagg.c trace_objagg_obj_get(objagg, objagg_obj, objagg_obj->refcount); objagg 450 lib/objagg.c static void objagg_obj_destroy(struct objagg *objagg, objagg 453 lib/objagg.c trace_objagg_obj_destroy(objagg, objagg_obj); objagg 454 lib/objagg.c --objagg->obj_count; objagg 456 lib/objagg.c rhashtable_remove_fast(&objagg->obj_ht, &objagg_obj->ht_node, objagg 457 lib/objagg.c objagg->ht_params); objagg 458 lib/objagg.c objagg_obj_fini(objagg, objagg_obj); objagg 462 lib/objagg.c static void __objagg_obj_put(struct objagg *objagg, objagg 466 lib/objagg.c objagg_obj_destroy(objagg, objagg_obj); objagg 478 lib/objagg.c void objagg_obj_put(struct objagg *objagg, struct objagg_obj *objagg_obj) objagg 480 lib/objagg.c trace_objagg_obj_put(objagg, objagg_obj, objagg_obj->refcount); objagg 482 lib/objagg.c __objagg_obj_put(objagg, objagg_obj); objagg 514 lib/objagg.c struct objagg *objagg_create(const struct objagg_ops *ops, objagg 517 lib/objagg.c struct objagg *objagg; objagg 525 lib/objagg.c objagg = kzalloc(sizeof(*objagg), GFP_KERNEL); objagg 526 lib/objagg.c if (!objagg) objagg 528 lib/objagg.c objagg->ops = ops; objagg 530 lib/objagg.c objagg->hints = objagg_hints; objagg 533 lib/objagg.c objagg->priv = priv; objagg 534 lib/objagg.c INIT_LIST_HEAD(&objagg->obj_list); objagg 536 lib/objagg.c objagg->ht_params.key_len = ops->obj_size; objagg 537 lib/objagg.c objagg->ht_params.key_offset = offsetof(struct objagg_obj, obj); objagg 538 lib/objagg.c objagg->ht_params.head_offset = offsetof(struct objagg_obj, ht_node); objagg 540 lib/objagg.c err = rhashtable_init(&objagg->obj_ht, &objagg->ht_params); objagg 544 lib/objagg.c ida_init(&objagg->root_ida); objagg 546 lib/objagg.c trace_objagg_create(objagg); objagg 547 lib/objagg.c return objagg; objagg 550 lib/objagg.c kfree(objagg); objagg 561 lib/objagg.c void objagg_destroy(struct objagg *objagg) objagg 563 lib/objagg.c trace_objagg_destroy(objagg); objagg 564 lib/objagg.c ida_destroy(&objagg->root_ida); objagg 565 lib/objagg.c WARN_ON(!list_empty(&objagg->obj_list)); objagg 566 lib/objagg.c rhashtable_destroy(&objagg->obj_ht); objagg 567 lib/objagg.c if (objagg->hints) objagg 568 lib/objagg.c objagg_hints_put(objagg->hints); objagg 569 lib/objagg.c kfree(objagg); objagg 604 lib/objagg.c const struct objagg_stats *objagg_stats_get(struct objagg *objagg) objagg 611 lib/objagg.c objagg->obj_count), GFP_KERNEL); objagg 616 lib/objagg.c list_for_each_entry(objagg_obj, &objagg->obj_list, list) { objagg 777 lib/objagg.c static struct objagg_tmp_graph *objagg_tmp_graph_create(struct objagg *objagg) objagg 779 lib/objagg.c unsigned int nodes_count = objagg->obj_count; objagg 803 lib/objagg.c list_for_each_entry(objagg_obj, &objagg->obj_list, list) { objagg 817 lib/objagg.c if (objagg->ops->delta_check(objagg->priv, objagg 843 lib/objagg.c struct objagg *objagg) objagg 852 lib/objagg.c graph = objagg_tmp_graph_create(objagg); objagg 864 lib/objagg.c objagg->ops->obj_size, objagg 880 lib/objagg.c objagg->ops->obj_size, objagg 897 lib/objagg.c struct objagg *objagg); objagg 940 lib/objagg.c struct objagg_hints *objagg_hints_get(struct objagg *objagg, objagg 951 lib/objagg.c objagg_hints->ops = objagg->ops; objagg 956 lib/objagg.c objagg_hints->ht_params.key_len = objagg->ops->obj_size; objagg 967 lib/objagg.c err = algo->fillup_hints(objagg_hints, objagg); objagg 971 lib/objagg.c if (WARN_ON(objagg_hints->node_count != objagg->obj_count)) { objagg 47 lib/test_objagg.c struct objagg *objagg, objagg 55 lib/test_objagg.c objagg_obj = objagg_obj_get(objagg, &key); objagg 72 lib/test_objagg.c objagg_obj_put(objagg, objagg_obj); objagg 76 lib/test_objagg.c static void world_obj_put(struct world *world, struct objagg *objagg, objagg 84 lib/test_objagg.c objagg_obj_put(objagg, objagg_obj); objagg 151 lib/test_objagg.c static int test_nodelta_obj_get(struct world *world, struct objagg *objagg, objagg 163 lib/test_objagg.c objagg_obj = world_obj_get(world, objagg, key_id); objagg 200 lib/test_objagg.c objagg_obj_put(objagg, objagg_obj); objagg 204 lib/test_objagg.c static int test_nodelta_obj_put(struct world *world, struct objagg *objagg, objagg 209 lib/test_objagg.c world_obj_put(world, objagg, key_id); objagg 226 lib/test_objagg.c static int check_stats_zero(struct objagg *objagg) objagg 231 lib/test_objagg.c stats = objagg_stats_get(objagg); objagg 244 lib/test_objagg.c static int check_stats_nodelta(struct objagg *objagg) objagg 250 lib/test_objagg.c stats = objagg_stats_get(objagg); objagg 307 lib/test_objagg.c struct objagg *objagg; objagg 311 lib/test_objagg.c objagg = objagg_create(&nodelta_ops, NULL, &world); objagg 312 lib/test_objagg.c if (IS_ERR(objagg)) objagg 313 lib/test_objagg.c return PTR_ERR(objagg); objagg 315 lib/test_objagg.c err = check_stats_zero(objagg); objagg 321 lib/test_objagg.c err = test_nodelta_obj_get(&world, objagg, i, true); objagg 330 lib/test_objagg.c err = test_nodelta_obj_get(&world, objagg, i, false); objagg 335 lib/test_objagg.c err = check_stats_nodelta(objagg); objagg 340 lib/test_objagg.c err = test_nodelta_obj_put(&world, objagg, i, false); objagg 345 lib/test_objagg.c err = test_nodelta_obj_put(&world, objagg, i, true); objagg 350 lib/test_objagg.c err = check_stats_zero(objagg); objagg 354 lib/test_objagg.c objagg_destroy(objagg); objagg 361 lib/test_objagg.c world_obj_put(&world, objagg, i); objagg 367 lib/test_objagg.c world_obj_put(&world, objagg, i); objagg 370 lib/test_objagg.c objagg_destroy(objagg); objagg 740 lib/test_objagg.c static int check_expect_stats(struct objagg *objagg, objagg 747 lib/test_objagg.c stats = objagg_stats_get(objagg); objagg 758 lib/test_objagg.c struct objagg *objagg, objagg 775 lib/test_objagg.c objagg_obj = world_obj_get(world, objagg, key_id); objagg 780 lib/test_objagg.c world_obj_put(world, objagg, key_id); objagg 791 lib/test_objagg.c err = check_expect_stats(objagg, &action_item->expect_stats, &errmsg); objagg 803 lib/test_objagg.c test_delta_action_item(world, objagg, action_item, true); objagg 810 lib/test_objagg.c struct objagg *objagg; objagg 814 lib/test_objagg.c objagg = objagg_create(&delta_ops, NULL, &world); objagg 815 lib/test_objagg.c if (IS_ERR(objagg)) objagg 816 lib/test_objagg.c return PTR_ERR(objagg); objagg 819 lib/test_objagg.c err = test_delta_action_item(&world, objagg, objagg 825 lib/test_objagg.c objagg_destroy(objagg); objagg 830 lib/test_objagg.c test_delta_action_item(&world, objagg, &action_items[i], true); objagg 832 lib/test_objagg.c objagg_destroy(objagg); objagg 872 lib/test_objagg.c static void pr_debug_stats(struct objagg *objagg) objagg 876 lib/test_objagg.c stats = objagg_stats_get(objagg); objagg 915 lib/test_objagg.c struct objagg *objagg2; objagg 916 lib/test_objagg.c struct objagg *objagg; objagg 921 lib/test_objagg.c objagg = objagg_create(&delta_ops, NULL, &world); objagg 922 lib/test_objagg.c if (IS_ERR(objagg)) objagg 923 lib/test_objagg.c return PTR_ERR(objagg); objagg 926 lib/test_objagg.c objagg_obj = world_obj_get(&world, objagg, objagg 934 lib/test_objagg.c pr_debug_stats(objagg); objagg 935 lib/test_objagg.c err = check_expect_stats(objagg, &hints_case->expect_stats, &errmsg); objagg 941 lib/test_objagg.c hints = objagg_hints_get(objagg, OBJAGG_OPT_ALGO_SIMPLE_GREEDY); objagg 981 lib/test_objagg.c world_obj_put(&world2, objagg, hints_case->key_ids[i]); objagg 990 lib/test_objagg.c world_obj_put(&world, objagg, hints_case->key_ids[i]); objagg 992 lib/test_objagg.c objagg_destroy(objagg);