diff options
Diffstat (limited to 'tools/perf/util/bpf-loader.c')
| -rw-r--r-- | tools/perf/util/bpf-loader.c | 45 | 
1 files changed, 24 insertions, 21 deletions
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c index c61974a50aa5..10c187b8b8ea 100644 --- a/tools/perf/util/bpf-loader.c +++ b/tools/perf/util/bpf-loader.c @@ -14,7 +14,7 @@  #include <linux/string.h>  #include <linux/zalloc.h>  #include <errno.h> -#include "perf.h" +#include <stdlib.h>  #include "debug.h"  #include "evlist.h"  #include "bpf-loader.h" @@ -23,9 +23,12 @@  #include "probe-finder.h" // for MAX_PROBES  #include "parse-events.h"  #include "strfilter.h" +#include "util.h"  #include "llvm-utils.h"  #include "c++/clang-c.h" +#include <internal/xyarray.h> +  static int libbpf_perf_print(enum libbpf_print_level level __attribute__((unused)),  			      const char *fmt, va_list args)  { @@ -763,7 +766,7 @@ int bpf__foreach_event(struct bpf_object *obj,  		if (priv->is_tp) {  			fd = bpf_program__fd(prog); -			err = (*func)(priv->sys_name, priv->evt_name, fd, arg); +			err = (*func)(priv->sys_name, priv->evt_name, fd, obj, arg);  			if (err) {  				pr_debug("bpf: tracepoint call back failed, stop iterate\n");  				return err; @@ -788,7 +791,7 @@ int bpf__foreach_event(struct bpf_object *obj,  				return fd;  			} -			err = (*func)(tev->group, tev->event, fd, arg); +			err = (*func)(tev->group, tev->event, fd, obj, arg);  			if (err) {  				pr_debug("bpf: call back failed, stop iterate\n");  				return err; @@ -817,7 +820,7 @@ struct bpf_map_op {  	} k;  	union {  		u64 value; -		struct perf_evsel *evsel; +		struct evsel *evsel;  	} v;  }; @@ -1043,7 +1046,7 @@ __bpf_map__config_value(struct bpf_map *map,  static int  bpf_map__config_value(struct bpf_map *map,  		      struct parse_events_term *term, -		      struct perf_evlist *evlist __maybe_unused) +		      struct evlist *evlist __maybe_unused)  {  	if (!term->err_val) {  		pr_debug("Config value not set\n"); @@ -1061,9 +1064,9 @@ bpf_map__config_value(struct bpf_map *map,  static int  __bpf_map__config_event(struct bpf_map *map,  			struct parse_events_term *term, -			struct perf_evlist *evlist) +			struct evlist *evlist)  { -	struct perf_evsel *evsel; +	struct evsel *evsel;  	const struct bpf_map_def *def;  	struct bpf_map_op *op;  	const char *map_name = bpf_map__name(map); @@ -1103,7 +1106,7 @@ __bpf_map__config_event(struct bpf_map *map,  static int  bpf_map__config_event(struct bpf_map *map,  		      struct parse_events_term *term, -		      struct perf_evlist *evlist) +		      struct evlist *evlist)  {  	if (!term->err_val) {  		pr_debug("Config value not set\n"); @@ -1121,7 +1124,7 @@ bpf_map__config_event(struct bpf_map *map,  struct bpf_obj_config__map_func {  	const char *config_opt;  	int (*config_func)(struct bpf_map *, struct parse_events_term *, -			   struct perf_evlist *); +			   struct evlist *);  };  struct bpf_obj_config__map_func bpf_obj_config__map_funcs[] = { @@ -1169,7 +1172,7 @@ config_map_indices_range_check(struct parse_events_term *term,  static int  bpf__obj_config_map(struct bpf_object *obj,  		    struct parse_events_term *term, -		    struct perf_evlist *evlist, +		    struct evlist *evlist,  		    int *key_scan_pos)  {  	/* key is "map:<mapname>.<config opt>" */ @@ -1228,7 +1231,7 @@ out:  int bpf__config_obj(struct bpf_object *obj,  		    struct parse_events_term *term, -		    struct perf_evlist *evlist, +		    struct evlist *evlist,  		    int *error_pos)  {  	int key_scan_pos = 0; @@ -1401,9 +1404,9 @@ apply_config_value_for_key(int map_fd, void *pkey,  static int  apply_config_evsel_for_key(const char *name, int map_fd, void *pkey, -			   struct perf_evsel *evsel) +			   struct evsel *evsel)  { -	struct xyarray *xy = evsel->fd; +	struct xyarray *xy = evsel->core.fd;  	struct perf_event_attr *attr;  	unsigned int key, events;  	bool check_pass = false; @@ -1421,7 +1424,7 @@ apply_config_evsel_for_key(const char *name, int map_fd, void *pkey,  		return -BPF_LOADER_ERRNO__OBJCONF_MAP_EVTDIM;  	} -	attr = &evsel->attr; +	attr = &evsel->core.attr;  	if (attr->inherit) {  		pr_debug("ERROR: Can't put inherit event into map %s\n", name);  		return -BPF_LOADER_ERRNO__OBJCONF_MAP_EVTINH; @@ -1523,11 +1526,11 @@ int bpf__apply_obj_config(void)  			(strcmp(name, 			\  				bpf_map__name(pos)) == 0)) -struct perf_evsel *bpf__setup_output_event(struct perf_evlist *evlist, const char *name) +struct evsel *bpf__setup_output_event(struct evlist *evlist, const char *name)  {  	struct bpf_map_priv *tmpl_priv = NULL;  	struct bpf_object *obj, *tmp; -	struct perf_evsel *evsel = NULL; +	struct evsel *evsel = NULL;  	struct bpf_map *map;  	int err;  	bool need_init = false; @@ -1565,7 +1568,7 @@ struct perf_evsel *bpf__setup_output_event(struct perf_evlist *evlist, const cha  			return ERR_PTR(-err);  		} -		evsel = perf_evlist__last(evlist); +		evsel = evlist__last(evlist);  	}  	bpf__for_each_map_named(map, obj, tmp, name) { @@ -1600,9 +1603,9 @@ struct perf_evsel *bpf__setup_output_event(struct perf_evlist *evlist, const cha  	return evsel;  } -int bpf__setup_stdout(struct perf_evlist *evlist) +int bpf__setup_stdout(struct evlist *evlist)  { -	struct perf_evsel *evsel = bpf__setup_output_event(evlist, "__bpf_stdout__"); +	struct evsel *evsel = bpf__setup_output_event(evlist, "__bpf_stdout__");  	return PTR_ERR_OR_ZERO(evsel);  } @@ -1756,7 +1759,7 @@ int bpf__strerror_load(struct bpf_object *obj,  int bpf__strerror_config_obj(struct bpf_object *obj __maybe_unused,  			     struct parse_events_term *term __maybe_unused, -			     struct perf_evlist *evlist __maybe_unused, +			     struct evlist *evlist __maybe_unused,  			     int *error_pos __maybe_unused, int err,  			     char *buf, size_t size)  { @@ -1780,7 +1783,7 @@ int bpf__strerror_apply_obj_config(int err, char *buf, size_t size)  	return 0;  } -int bpf__strerror_setup_output_event(struct perf_evlist *evlist __maybe_unused, +int bpf__strerror_setup_output_event(struct evlist *evlist __maybe_unused,  				     int err, char *buf, size_t size)  {  	bpf__strerror_head(err, buf, size);  |