Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 *//* Copyright (c) 2018 Mellanox Technologies. All rights reserved */
#ifndef _OBJAGG_H#define _OBJAGG_H
struct objagg_ops { size_t obj_size; bool (*delta_check)(void *priv, const void *parent_obj, const void *obj); void * (*delta_create)(void *priv, void *parent_obj, void *obj); void (*delta_destroy)(void *priv, void *delta_priv); void * (*root_create)(void *priv, void *obj, unsigned int root_id);#define OBJAGG_OBJ_ROOT_ID_INVALID UINT_MAX void (*root_destroy)(void *priv, void *root_priv);};
struct objagg;struct objagg_obj;struct objagg_hints;
const void *objagg_obj_root_priv(const struct objagg_obj *objagg_obj);const void *objagg_obj_delta_priv(const struct objagg_obj *objagg_obj);const void *objagg_obj_raw(const struct objagg_obj *objagg_obj);
struct objagg_obj *objagg_obj_get(struct objagg *objagg, void *obj);void objagg_obj_put(struct objagg *objagg, struct objagg_obj *objagg_obj);struct objagg *objagg_create(const struct objagg_ops *ops, struct objagg_hints *hints, void *priv);void objagg_destroy(struct objagg *objagg);
struct objagg_obj_stats { unsigned int user_count; unsigned int delta_user_count; /* includes delta object users */};
struct objagg_obj_stats_info { struct objagg_obj_stats stats; struct objagg_obj *objagg_obj; /* associated object */ bool is_root;};
struct objagg_stats { unsigned int root_count; unsigned int stats_info_count; struct objagg_obj_stats_info stats_info[];};
const struct objagg_stats *objagg_stats_get(struct objagg *objagg);void objagg_stats_put(const struct objagg_stats *objagg_stats);
enum objagg_opt_algo_type { OBJAGG_OPT_ALGO_SIMPLE_GREEDY,};
struct objagg_hints *objagg_hints_get(struct objagg *objagg, enum objagg_opt_algo_type opt_algo_type);void objagg_hints_put(struct objagg_hints *objagg_hints);const struct objagg_stats *objagg_hints_stats_get(struct objagg_hints *objagg_hints);
#endif