Commit | Line | Data |
---|---|---|
0db15b1e AH |
1 | /* |
2 | * db-export.h: Support for exporting data suitable for import to a database | |
3 | * Copyright (c) 2014, Intel Corporation. | |
4 | * | |
5 | * This program is free software; you can redistribute it and/or modify it | |
6 | * under the terms and conditions of the GNU General Public License, | |
7 | * version 2, as published by the Free Software Foundation. | |
8 | * | |
9 | * This program is distributed in the hope it will be useful, but WITHOUT | |
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
12 | * more details. | |
13 | * | |
14 | */ | |
15 | ||
16 | #ifndef __PERF_DB_EXPORT_H | |
17 | #define __PERF_DB_EXPORT_H | |
18 | ||
19 | #include <linux/types.h> | |
758008b2 | 20 | #include <linux/list.h> |
0db15b1e AH |
21 | |
22 | struct perf_evsel; | |
23 | struct machine; | |
24 | struct thread; | |
25 | struct comm; | |
26 | struct dso; | |
27 | struct perf_sample; | |
28 | struct addr_location; | |
88f50d60 | 29 | struct call_return_processor; |
0a3eba3a | 30 | struct call_path_root; |
88f50d60 AH |
31 | struct call_path; |
32 | struct call_return; | |
0db15b1e AH |
33 | |
34 | struct export_sample { | |
35 | union perf_event *event; | |
36 | struct perf_sample *sample; | |
37 | struct perf_evsel *evsel; | |
0db15b1e AH |
38 | struct addr_location *al; |
39 | u64 db_id; | |
40 | u64 comm_db_id; | |
41 | u64 dso_db_id; | |
42 | u64 sym_db_id; | |
43 | u64 offset; /* ip offset from symbol start */ | |
44 | u64 addr_dso_db_id; | |
45 | u64 addr_sym_db_id; | |
46 | u64 addr_offset; /* addr offset from symbol start */ | |
568850ea | 47 | u64 call_path_id; |
0db15b1e AH |
48 | }; |
49 | ||
50 | struct db_export { | |
51 | int (*export_evsel)(struct db_export *dbe, struct perf_evsel *evsel); | |
52 | int (*export_machine)(struct db_export *dbe, struct machine *machine); | |
53 | int (*export_thread)(struct db_export *dbe, struct thread *thread, | |
54 | u64 main_thread_db_id, struct machine *machine); | |
55 | int (*export_comm)(struct db_export *dbe, struct comm *comm); | |
56 | int (*export_comm_thread)(struct db_export *dbe, u64 db_id, | |
57 | struct comm *comm, struct thread *thread); | |
58 | int (*export_dso)(struct db_export *dbe, struct dso *dso, | |
59 | struct machine *machine); | |
60 | int (*export_symbol)(struct db_export *dbe, struct symbol *sym, | |
61 | struct dso *dso); | |
f2bff007 AH |
62 | int (*export_branch_type)(struct db_export *dbe, u32 branch_type, |
63 | const char *name); | |
0db15b1e | 64 | int (*export_sample)(struct db_export *dbe, struct export_sample *es); |
88f50d60 AH |
65 | int (*export_call_path)(struct db_export *dbe, struct call_path *cp); |
66 | int (*export_call_return)(struct db_export *dbe, | |
67 | struct call_return *cr); | |
68 | struct call_return_processor *crp; | |
0a3eba3a | 69 | struct call_path_root *cpr; |
0db15b1e AH |
70 | u64 evsel_last_db_id; |
71 | u64 machine_last_db_id; | |
72 | u64 thread_last_db_id; | |
73 | u64 comm_last_db_id; | |
74 | u64 comm_thread_last_db_id; | |
75 | u64 dso_last_db_id; | |
76 | u64 symbol_last_db_id; | |
77 | u64 sample_last_db_id; | |
88f50d60 AH |
78 | u64 call_path_last_db_id; |
79 | u64 call_return_last_db_id; | |
758008b2 | 80 | struct list_head deferred; |
0db15b1e AH |
81 | }; |
82 | ||
83 | int db_export__init(struct db_export *dbe); | |
758008b2 | 84 | int db_export__flush(struct db_export *dbe); |
0db15b1e AH |
85 | void db_export__exit(struct db_export *dbe); |
86 | int db_export__evsel(struct db_export *dbe, struct perf_evsel *evsel); | |
87 | int db_export__machine(struct db_export *dbe, struct machine *machine); | |
88 | int db_export__thread(struct db_export *dbe, struct thread *thread, | |
89 | struct machine *machine, struct comm *comm); | |
90 | int db_export__comm(struct db_export *dbe, struct comm *comm, | |
91 | struct thread *main_thread); | |
92 | int db_export__comm_thread(struct db_export *dbe, struct comm *comm, | |
93 | struct thread *thread); | |
94 | int db_export__dso(struct db_export *dbe, struct dso *dso, | |
95 | struct machine *machine); | |
96 | int db_export__symbol(struct db_export *dbe, struct symbol *sym, | |
97 | struct dso *dso); | |
f2bff007 AH |
98 | int db_export__branch_type(struct db_export *dbe, u32 branch_type, |
99 | const char *name); | |
0db15b1e AH |
100 | int db_export__sample(struct db_export *dbe, union perf_event *event, |
101 | struct perf_sample *sample, struct perf_evsel *evsel, | |
7327259d | 102 | struct addr_location *al); |
0db15b1e | 103 | |
f2bff007 AH |
104 | int db_export__branch_types(struct db_export *dbe); |
105 | ||
88f50d60 AH |
106 | int db_export__call_path(struct db_export *dbe, struct call_path *cp); |
107 | int db_export__call_return(struct db_export *dbe, struct call_return *cr); | |
108 | ||
0db15b1e | 109 | #endif |