diff options
Diffstat (limited to 'tools/bpf/bpftool/main.h')
| -rw-r--r-- | tools/bpf/bpftool/main.h | 54 | 
1 files changed, 27 insertions, 27 deletions
| diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h index 90caa42aac4c..383835c2604d 100644 --- a/tools/bpf/bpftool/main.h +++ b/tools/bpf/bpftool/main.h @@ -11,9 +11,9 @@  #include <linux/bpf.h>  #include <linux/compiler.h>  #include <linux/kernel.h> -#include <linux/hashtable.h>  #include <tools/libc_compat.h> +#include <bpf/hashmap.h>  #include <bpf/libbpf.h>  #include "json_writer.h" @@ -91,10 +91,7 @@ extern bool verifier_logs;  extern bool relaxed_maps;  extern bool use_loader;  extern struct btf *base_btf; -extern struct pinned_obj_table prog_table; -extern struct pinned_obj_table map_table; -extern struct pinned_obj_table link_table; -extern struct obj_refs_table refs_table; +extern struct hashmap *refs_table;  void __printf(1, 2) p_err(const char *fmt, ...);  void __printf(1, 2) p_info(const char *fmt, ...); @@ -108,28 +105,12 @@ void set_max_rlimit(void);  int mount_tracefs(const char *target); -struct pinned_obj_table { -	DECLARE_HASHTABLE(table, 16); -}; - -struct pinned_obj { -	__u32 id; -	char *path; -	struct hlist_node hash; -}; - -struct obj_refs_table { -	DECLARE_HASHTABLE(table, 16); -}; -  struct obj_ref {  	int pid;  	char comm[16];  };  struct obj_refs { -	struct hlist_node node; -	__u32 id;  	int ref_cnt;  	struct obj_ref *refs;  }; @@ -137,15 +118,15 @@ struct obj_refs {  struct btf;  struct bpf_line_info; -int build_pinned_obj_table(struct pinned_obj_table *table, +int build_pinned_obj_table(struct hashmap *table,  			   enum bpf_obj_type type); -void delete_pinned_obj_table(struct pinned_obj_table *tab); -__weak int build_obj_refs_table(struct obj_refs_table *table, +void delete_pinned_obj_table(struct hashmap *table); +__weak int build_obj_refs_table(struct hashmap **table,  				enum bpf_obj_type type); -__weak void delete_obj_refs_table(struct obj_refs_table *table); -__weak void emit_obj_refs_json(struct obj_refs_table *table, __u32 id, +__weak void delete_obj_refs_table(struct hashmap *table); +__weak void emit_obj_refs_json(struct hashmap *table, __u32 id,  			       json_writer_t *json_wtr); -__weak void emit_obj_refs_plain(struct obj_refs_table *table, __u32 id, +__weak void emit_obj_refs_plain(struct hashmap *table, __u32 id,  				const char *prefix);  void print_dev_plain(__u32 ifindex, __u64 ns_dev, __u64 ns_inode);  void print_dev_json(__u32 ifindex, __u64 ns_dev, __u64 ns_inode); @@ -259,4 +240,23 @@ int do_filter_dump(struct tcmsg *ifinfo, struct nlattr **tb, const char *kind,  int print_all_levels(__maybe_unused enum libbpf_print_level level,  		     const char *format, va_list args); + +size_t hash_fn_for_key_as_id(const void *key, void *ctx); +bool equal_fn_for_key_as_id(const void *k1, const void *k2, void *ctx); + +static inline void *u32_as_hash_field(__u32 x) +{ +	return (void *)(uintptr_t)x; +} + +static inline __u32 hash_field_as_u32(const void *x) +{ +	return (__u32)(uintptr_t)x; +} + +static inline bool hashmap__empty(struct hashmap *map) +{ +	return map ? hashmap__size(map) == 0 : true; +} +  #endif |