diff options
Diffstat (limited to 'tools/perf/util/probe-finder.h')
| -rw-r--r-- | tools/perf/util/probe-finder.h | 67 | 
1 files changed, 20 insertions, 47 deletions
| diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h index 21f7354397b4..66f1980e3855 100644 --- a/tools/perf/util/probe-finder.h +++ b/tools/perf/util/probe-finder.h @@ -3,6 +3,7 @@  #include <stdbool.h>  #include "util.h" +#include "probe-event.h"  #define MAX_PATH_LEN		 256  #define MAX_PROBE_BUFFER	1024 @@ -14,67 +15,39 @@ static inline int is_c_varname(const char *name)  	return isalpha(name[0]) || name[0] == '_';  } -struct probe_point { -	char			*event;			/* Event name */ -	char			*group;			/* Event group */ +#ifdef DWARF_SUPPORT +/* Find kprobe_trace_events specified by perf_probe_event from debuginfo */ +extern int find_kprobe_trace_events(int fd, struct perf_probe_event *pev, +				    struct kprobe_trace_event **tevs, +				    int max_tevs); -	/* Inputs */ -	char			*file;			/* File name */ -	int			line;			/* Line number */ -	char			*lazy_line;		/* Lazy line pattern */ +/* Find a perf_probe_point from debuginfo */ +extern int find_perf_probe_point(int fd, unsigned long addr, +				 struct perf_probe_point *ppt); -	char			*function;		/* Function name */ -	int			offset;			/* Offset bytes */ - -	int			nr_args;		/* Number of arguments */ -	char			**args;			/* Arguments */ - -	int			retprobe;		/* Return probe */ - -	/* Output */ -	int			found;			/* Number of found probe points */ -	char			*probes[MAX_PROBES];	/* Output buffers (will be allocated)*/ -}; - -/* Line number container */ -struct line_node { -	struct list_head	list; -	unsigned int		line; -}; - -/* Line range */ -struct line_range { -	char			*file;			/* File name */ -	char			*function;		/* Function name */ -	unsigned int		start;			/* Start line number */ -	unsigned int		end;			/* End line number */ -	int			offset;			/* Start line offset */ -	char			*path;			/* Real path name */ -	struct list_head	line_list;		/* Visible lines */ -}; - -#ifndef NO_DWARF_SUPPORT -extern int find_probe_point(int fd, struct probe_point *pp);  extern int find_line_range(int fd, struct line_range *lr);  #include <dwarf.h>  #include <libdw.h>  struct probe_finder { -	struct probe_point	*pp;		/* Target probe point */ +	struct perf_probe_event	*pev;		/* Target probe event */ +	struct kprobe_trace_event *tevs;	/* Result trace events */ +	int			ntevs;		/* Number of trace events */ +	int			max_tevs;	/* Max number of trace events */  	/* For function searching */ -	Dwarf_Addr		addr;		/* Address */ -	const char		*fname;		/* File name */  	int			lno;		/* Line number */ +	Dwarf_Addr		addr;		/* Address */ +	const char		*fname;		/* Real file name */  	Dwarf_Die		cu_die;		/* Current CU */ +	struct list_head	lcache;		/* Line cache for lazy match */  	/* For variable searching */ +	Dwarf_CFI		*cfi;		/* Call Frame Information */  	Dwarf_Op		*fb_ops;	/* Frame base attribute */ -	const char		*var;		/* Current variable name */ -	char			*buf;		/* Current output buffer */ -	int			len;		/* Length of output buffer */ -	struct list_head	lcache;		/* Line cache for lazy match */ +	struct perf_probe_arg	*pvar;		/* Current target variable */ +	struct kprobe_trace_arg	*tvar;		/* Current result variable */  };  struct line_finder { @@ -87,6 +60,6 @@ struct line_finder {  	int			found;  }; -#endif /* NO_DWARF_SUPPORT */ +#endif /* DWARF_SUPPORT */  #endif /*_PROBE_FINDER_H */ | 
