diff options
author | Tzvetomir Stoyanov <tstoyanov@vmware.com> | 2018-10-05 12:22:25 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2018-10-08 14:05:37 -0400 |
commit | bb3dd7e7c4d5e024d607c0ec06c2a2fb9408cc99 (patch) | |
tree | d2970356440791f3cd1ecaf8150e5b7786fa0e01 /tools/lib/traceevent/event-parse-api.c | |
parent | bbbab191c2c474d183e93799d008b412e97f5936 (diff) |
tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file
As traceevent is going to be transferred into a proper library,
its local data should be protected from the library users.
This patch encapsulates struct tep_handler into a local header,
not visible outside of the library. It implements also a bunch
of new APIs, which library users can use to access tep_handler members.
Signed-off-by: Tzvetomir Stoyanov <tstoyanov@vmware.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: linux trace devel <linux-trace-devel@vger.kernel.org>
Cc: tzvetomir stoyanov <tstoyanov@vmware.com>
Link: http://lkml.kernel.org/r/20181005122225.522155df@gandalf.local.home
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/traceevent/event-parse-api.c')
-rw-r--r-- | tools/lib/traceevent/event-parse-api.c | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/tools/lib/traceevent/event-parse-api.c b/tools/lib/traceevent/event-parse-api.c new file mode 100644 index 000000000000..61f7149085ee --- /dev/null +++ b/tools/lib/traceevent/event-parse-api.c | |||
@@ -0,0 +1,275 @@ | |||
1 | // SPDX-License-Identifier: LGPL-2.1 | ||
2 | /* | ||
3 | * Copyright (C) 2009, 2010 Red Hat Inc, Steven Rostedt <srostedt@redhat.com> | ||
4 | * | ||
5 | */ | ||
6 | |||
7 | #include "event-parse.h" | ||
8 | #include "event-parse-local.h" | ||
9 | #include "event-utils.h" | ||
10 | |||
11 | /** | ||
12 | * tep_get_first_event - returns the first event in the events array | ||
13 | * @tep: a handle to the tep_handle | ||
14 | * | ||
15 | * This returns pointer to the first element of the events array | ||
16 | * If @tep is NULL, NULL is returned. | ||
17 | */ | ||
18 | struct tep_event_format *tep_get_first_event(struct tep_handle *tep) | ||
19 | { | ||
20 | if (tep && tep->events) | ||
21 | return tep->events[0]; | ||
22 | |||
23 | return NULL; | ||
24 | } | ||
25 | |||
26 | /** | ||
27 | * tep_get_events_count - get the number of defined events | ||
28 | * @tep: a handle to the tep_handle | ||
29 | * | ||
30 | * This returns number of elements in event array | ||
31 | * If @tep is NULL, 0 is returned. | ||
32 | */ | ||
33 | int tep_get_events_count(struct tep_handle *tep) | ||
34 | { | ||
35 | if(tep) | ||
36 | return tep->nr_events; | ||
37 | return 0; | ||
38 | } | ||
39 | |||
40 | /** | ||
41 | * tep_set_flag - set event parser flag | ||
42 | * @tep: a handle to the tep_handle | ||
43 | * @flag: flag, or combination of flags to be set | ||
44 | * can be any combination from enum tep_flag | ||
45 | * | ||
46 | * This sets a flag or mbination of flags from enum tep_flag | ||
47 | */ | ||
48 | void tep_set_flag(struct tep_handle *tep, int flag) | ||
49 | { | ||
50 | if(tep) | ||
51 | tep->flags |= flag; | ||
52 | } | ||
53 | |||
54 | unsigned short __tep_data2host2(struct tep_handle *pevent, unsigned short data) | ||
55 | { | ||
56 | unsigned short swap; | ||
57 | |||
58 | if (!pevent || pevent->host_bigendian == pevent->file_bigendian) | ||
59 | return data; | ||
60 | |||
61 | swap = ((data & 0xffULL) << 8) | | ||
62 | ((data & (0xffULL << 8)) >> 8); | ||
63 | |||
64 | return swap; | ||
65 | } | ||
66 | |||
67 | unsigned int __tep_data2host4(struct tep_handle *pevent, unsigned int data) | ||
68 | { | ||
69 | unsigned int swap; | ||
70 | |||
71 | if (!pevent || pevent->host_bigendian == pevent->file_bigendian) | ||
72 | return data; | ||
73 | |||
74 | swap = ((data & 0xffULL) << 24) | | ||
75 | ((data & (0xffULL << 8)) << 8) | | ||
76 | ((data & (0xffULL << 16)) >> 8) | | ||
77 | ((data & (0xffULL << 24)) >> 24); | ||
78 | |||
79 | return swap; | ||
80 | } | ||
81 | |||
82 | unsigned long long | ||
83 | __tep_data2host8(struct tep_handle *pevent, unsigned long long data) | ||
84 | { | ||
85 | unsigned long long swap; | ||
86 | |||
87 | if (!pevent || pevent->host_bigendian == pevent->file_bigendian) | ||
88 | return data; | ||
89 | |||
90 | swap = ((data & 0xffULL) << 56) | | ||
91 | ((data & (0xffULL << 8)) << 40) | | ||
92 | ((data & (0xffULL << 16)) << 24) | | ||
93 | ((data & (0xffULL << 24)) << 8) | | ||
94 | ((data & (0xffULL << 32)) >> 8) | | ||
95 | ((data & (0xffULL << 40)) >> 24) | | ||
96 | ((data & (0xffULL << 48)) >> 40) | | ||
97 | ((data & (0xffULL << 56)) >> 56); | ||
98 | |||
99 | return swap; | ||
100 | } | ||
101 | |||
102 | /** | ||
103 | * tep_get_header_page_size - get size of the header page | ||
104 | * @pevent: a handle to the tep_handle | ||
105 | * | ||
106 | * This returns size of the header page | ||
107 | * If @pevent is NULL, 0 is returned. | ||
108 | */ | ||
109 | int tep_get_header_page_size(struct tep_handle *pevent) | ||
110 | { | ||
111 | if(pevent) | ||
112 | return pevent->header_page_size_size; | ||
113 | return 0; | ||
114 | } | ||
115 | |||
116 | /** | ||
117 | * tep_get_cpus - get the number of CPUs | ||
118 | * @pevent: a handle to the tep_handle | ||
119 | * | ||
120 | * This returns the number of CPUs | ||
121 | * If @pevent is NULL, 0 is returned. | ||
122 | */ | ||
123 | int tep_get_cpus(struct tep_handle *pevent) | ||
124 | { | ||
125 | if(pevent) | ||
126 | return pevent->cpus; | ||
127 | return 0; | ||
128 | } | ||
129 | |||
130 | /** | ||
131 | * tep_set_cpus - set the number of CPUs | ||
132 | * @pevent: a handle to the tep_handle | ||
133 | * | ||
134 | * This sets the number of CPUs | ||
135 | */ | ||
136 | void tep_set_cpus(struct tep_handle *pevent, int cpus) | ||
137 | { | ||
138 | if(pevent) | ||
139 | pevent->cpus = cpus; | ||
140 | } | ||
141 | |||
142 | /** | ||
143 | * tep_get_long_size - get the size of a long integer on the current machine | ||
144 | * @pevent: a handle to the tep_handle | ||
145 | * | ||
146 | * This returns the size of a long integer on the current machine | ||
147 | * If @pevent is NULL, 0 is returned. | ||
148 | */ | ||
149 | int tep_get_long_size(struct tep_handle *pevent) | ||
150 | { | ||
151 | if(pevent) | ||
152 | return pevent->long_size; | ||
153 | return 0; | ||
154 | } | ||
155 | |||
156 | /** | ||
157 | * tep_set_long_size - set the size of a long integer on the current machine | ||
158 | * @pevent: a handle to the tep_handle | ||
159 | * @size: size, in bytes, of a long integer | ||
160 | * | ||
161 | * This sets the size of a long integer on the current machine | ||
162 | */ | ||
163 | void tep_set_long_size(struct tep_handle *pevent, int long_size) | ||
164 | { | ||
165 | if(pevent) | ||
166 | pevent->long_size = long_size; | ||
167 | } | ||
168 | |||
169 | /** | ||
170 | * tep_get_page_size - get the size of a memory page on the current machine | ||
171 | * @pevent: a handle to the tep_handle | ||
172 | * | ||
173 | * This returns the size of a memory page on the current machine | ||
174 | * If @pevent is NULL, 0 is returned. | ||
175 | */ | ||
176 | int tep_get_page_size(struct tep_handle *pevent) | ||
177 | { | ||
178 | if(pevent) | ||
179 | return pevent->page_size; | ||
180 | return 0; | ||
181 | } | ||
182 | |||
183 | /** | ||
184 | * tep_set_page_size - set the size of a memory page on the current machine | ||
185 | * @pevent: a handle to the tep_handle | ||
186 | * @_page_size: size of a memory page, in bytes | ||
187 | * | ||
188 | * This sets the size of a memory page on the current machine | ||
189 | */ | ||
190 | void tep_set_page_size(struct tep_handle *pevent, int _page_size) | ||
191 | { | ||
192 | if(pevent) | ||
193 | pevent->page_size = _page_size; | ||
194 | } | ||
195 | |||
196 | /** | ||
197 | * tep_is_file_bigendian - get if the file is in big endian order | ||
198 | * @pevent: a handle to the tep_handle | ||
199 | * | ||
200 | * This returns if the file is in big endian order | ||
201 | * If @pevent is NULL, 0 is returned. | ||
202 | */ | ||
203 | int tep_is_file_bigendian(struct tep_handle *pevent) | ||
204 | { | ||
205 | if(pevent) | ||
206 | return pevent->file_bigendian; | ||
207 | return 0; | ||
208 | } | ||
209 | |||
210 | /** | ||
211 | * tep_set_file_bigendian - set if the file is in big endian order | ||
212 | * @pevent: a handle to the tep_handle | ||
213 | * @endian: non zero, if the file is in big endian order | ||
214 | * | ||
215 | * This sets if the file is in big endian order | ||
216 | */ | ||
217 | void tep_set_file_bigendian(struct tep_handle *pevent, enum tep_endian endian) | ||
218 | { | ||
219 | if(pevent) | ||
220 | pevent->file_bigendian = endian; | ||
221 | } | ||
222 | |||
223 | /** | ||
224 | * tep_is_host_bigendian - get if the order of the current host is big endian | ||
225 | * @pevent: a handle to the tep_handle | ||
226 | * | ||
227 | * This gets if the order of the current host is big endian | ||
228 | * If @pevent is NULL, 0 is returned. | ||
229 | */ | ||
230 | int tep_is_host_bigendian(struct tep_handle *pevent) | ||
231 | { | ||
232 | if(pevent) | ||
233 | return pevent->host_bigendian; | ||
234 | return 0; | ||
235 | } | ||
236 | |||
237 | /** | ||
238 | * tep_set_host_bigendian - set the order of the local host | ||
239 | * @pevent: a handle to the tep_handle | ||
240 | * @endian: non zero, if the local host has big endian order | ||
241 | * | ||
242 | * This sets the order of the local host | ||
243 | */ | ||
244 | void tep_set_host_bigendian(struct tep_handle *pevent, enum tep_endian endian) | ||
245 | { | ||
246 | if(pevent) | ||
247 | pevent->host_bigendian = endian; | ||
248 | } | ||
249 | |||
250 | /** | ||
251 | * tep_is_latency_format - get if the latency output format is configured | ||
252 | * @pevent: a handle to the tep_handle | ||
253 | * | ||
254 | * This gets if the latency output format is configured | ||
255 | * If @pevent is NULL, 0 is returned. | ||
256 | */ | ||
257 | int tep_is_latency_format(struct tep_handle *pevent) | ||
258 | { | ||
259 | if(pevent) | ||
260 | return pevent->latency_format; | ||
261 | return 0; | ||
262 | } | ||
263 | |||
264 | /** | ||
265 | * tep_set_latency_format - set the latency output format | ||
266 | * @pevent: a handle to the tep_handle | ||
267 | * @lat: non zero for latency output format | ||
268 | * | ||
269 | * This sets the latency output format | ||
270 | */ | ||
271 | void tep_set_latency_format(struct tep_handle *pevent, int lat) | ||
272 | { | ||
273 | if(pevent) | ||
274 | pevent->latency_format = lat; | ||
275 | } | ||