Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / tools / perf / util / probe-finder.h
1 #ifndef _PROBE_FINDER_H
2 #define _PROBE_FINDER_H
3
4 #define MAX_PATH_LEN             256
5 #define MAX_PROBE_BUFFER        1024
6 #define MAX_PROBES               128
7
8 static inline int is_c_varname(const char *name)
9 {
10         /* TODO */
11         return isalpha(name[0]) || name[0] == '_';
12 }
13
14 struct probe_point {
15         char                    *event;                 /* Event name */
16         char                    *group;                 /* Event group */
17
18         /* Inputs */
19         char                    *file;                  /* File name */
20         int                     line;                   /* Line number */
21
22         char                    *function;              /* Function name */
23         int                     offset;                 /* Offset bytes */
24
25         int                     nr_args;                /* Number of arguments */
26         char                    **args;                 /* Arguments */
27
28         int                     retprobe;               /* Return probe */
29
30         /* Output */
31         int                     found;                  /* Number of found probe points */
32         char                    *probes[MAX_PROBES];    /* Output buffers (will be allocated)*/
33 };
34
35 #ifndef NO_LIBDWARF
36 extern int find_probepoint(int fd, struct probe_point *pp);
37
38 /* Workaround for undefined _MIPS_SZLONG bug in libdwarf.h: */
39 #ifndef _MIPS_SZLONG
40 # define _MIPS_SZLONG           0
41 #endif
42
43 #include <dwarf.h>
44 #include <libdwarf.h>
45
46 struct probe_finder {
47         struct probe_point      *pp;                    /* Target probe point */
48
49         /* For function searching */
50         Dwarf_Addr              addr;                   /* Address */
51         Dwarf_Unsigned          fno;                    /* File number */
52         Dwarf_Unsigned          lno;                    /* Line number */
53         Dwarf_Off               inl_offs;               /* Inline offset */
54         Dwarf_Die               cu_die;                 /* Current CU */
55
56         /* For variable searching */
57         Dwarf_Addr              cu_base;                /* Current CU base address */
58         Dwarf_Locdesc           fbloc;                  /* Location of Current Frame Base */
59         const char              *var;                   /* Current variable name */
60         char                    *buf;                   /* Current output buffer */
61         int                     len;                    /* Length of output buffer */
62 };
63 #endif /* NO_LIBDWARF */
64
65 #endif /*_PROBE_FINDER_H */