149600c72d21997b14355ccdf391bca6931032e9
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.os.linux.core / src / org / eclipse / tracecompass / analysis / os / linux / core / trace / DefaultEventLayout.java
1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Alexandre Montplaisir - Initial API and implementation
11 ******************************************************************************/
12
13 package org.eclipse.tracecompass.analysis.os.linux.core.trace;
14
15 import java.util.Collection;
16
17 import org.eclipse.jdt.annotation.NonNull;
18
19 import com.google.common.collect.ImmutableList;
20
21 /**
22 * A kernel event layout to be used by default. This can be useful for
23 * data-driven traces for example, where they can provide whatever event names
24 * they want.
25 *
26 * Due to historical reasons, the definitions are the same as LTTng event names.
27 *
28 * @author Alexandre Montplaisir
29 * @since 1.0
30 */
31 public class DefaultEventLayout implements IKernelAnalysisEventLayout {
32
33 /* Event names */
34 private static final String IRQ_HANDLER_ENTRY = "irq_handler_entry"; //$NON-NLS-1$
35 private static final String IRQ_HANDLER_EXIT = "irq_handler_exit"; //$NON-NLS-1$
36 private static final String SOFTIRQ_ENTRY = "softirq_entry"; //$NON-NLS-1$
37 private static final String SOFTIRQ_EXIT = "softirq_exit"; //$NON-NLS-1$
38 private static final String SOFTIRQ_RAISE = "softirq_raise"; //$NON-NLS-1$
39 private static final String HRTIMER_START = "hrtimer_start"; //$NON-NLS-1$
40 private static final String HRTIMER_CANCEL = "hrtimer_cancel"; //$NON-NLS-1$
41 private static final String HRTIMER_EXPIRE_ENTRY = "hrtimer_expire_entry"; //$NON-NLS-1$
42 private static final String HRTIMER_EXPIRE_EXIT = "hrtimer_expire_exit"; //$NON-NLS-1$
43 private static final String SCHED_SWITCH = "sched_switch"; //$NON-NLS-1$
44 private static final String SCHED_PI_SETPRIO = "sched_pi_setprio"; //$NON-NLS-1$
45
46 private static final String SCHED_TTWU = "sched_ttwu"; //$NON-NLS-1$
47 private static final String SCHED_WAKING = "sched_waking"; //$NON-NLS-1$
48 private static final String SCHED_WAKEUP = "sched_wakeup"; //$NON-NLS-1$
49 private static final String SCHED_WAKEUP_NEW = "sched_wakeup_new"; //$NON-NLS-1$
50 private static final Collection<String> SCHED_WAKEUP_EVENTS =
51 ImmutableList.of(SCHED_WAKEUP, SCHED_WAKEUP_NEW);
52
53 private static final String SCHED_PROCESS_FORK = "sched_process_fork"; //$NON-NLS-1$
54 private static final String SCHED_PROCESS_EXIT = "sched_process_exit"; //$NON-NLS-1$
55 private static final String SCHED_PROCESS_FREE = "sched_process_free"; //$NON-NLS-1$
56 private static final String SCHED_PROCESS_EXEC = "sched_process_exec"; //$NON-NLS-1$
57 private static final String STATEDUMP_PROCESS_STATE = "lttng_statedump_process_state"; //$NON-NLS-1$
58
59 private static final String SYSCALL_ENTRY_PREFIX = "sys_"; //$NON-NLS-1$
60 private static final String COMPAT_SYSCALL_ENTRY_PREFIX = "compat_sys_"; //$NON-NLS-1$
61 private static final String SYSCALL_EXIT_PREFIX = "exit_syscall"; //$NON-NLS-1$
62
63 /* Field names */
64 private static final String IRQ = "irq"; //$NON-NLS-1$
65 private static final String TID = "tid"; //$NON-NLS-1$
66 private static final String VEC = "vec"; //$NON-NLS-1$
67 private static final String PREV_TID = "prev_tid"; //$NON-NLS-1$
68 private static final String PREV_STATE = "prev_state"; //$NON-NLS-1$
69 private static final String NEXT_COMM = "next_comm"; //$NON-NLS-1$
70 private static final String NEXT_TID = "next_tid"; //$NON-NLS-1$
71 private static final String PARENT_TID = "parent_tid"; //$NON-NLS-1$
72 private static final String CHILD_COMM = "child_comm"; //$NON-NLS-1$
73 private static final String CHILD_TID = "child_tid"; //$NON-NLS-1$
74 private static final String PRIO = "prio"; //$NON-NLS-1$
75 private static final String NEW_PRIO = "newprio"; //$NON-NLS-1$
76 private static final String NEXT_PRIO = "next_prio"; //$NON-NLS-1$
77 private static final String COMM = "comm"; //$NON-NLS-1$
78 private static final String NAME = "name"; //$NON-NLS-1$
79 private static final String STATUS = "status"; //$NON-NLS-1$
80 private static final String PREV_COMM = "prev_comm"; //$NON-NLS-1$
81 private static final String FILENAME = "filename"; //$NON-NLS-1$
82 private static final String HRTIMER = "hrtimer"; //$NON-NLS-1$
83 private static final String FUNCTION = "function"; //$NON-NLS-1$
84 private static final String EXPIRES = "expires"; //$NON-NLS-1$
85 private static final String NOW = "now"; //$NON-NLS-1$
86 private static final String SOFT_EXPIRES = "softexpires"; //$NON-NLS-1$
87
88 /**
89 * Constructor, to be used by classes extending this one. To get an instance
90 * of this class, INSTANCE should be used.
91 *
92 * @since 2.0
93 */
94 protected DefaultEventLayout() {
95 }
96
97 /**
98 * The instance of this event layout
99 *
100 * This object is completely immutable, so no need to create additional
101 * instances via the constructor.
102 */
103 static final IKernelAnalysisEventLayout INSTANCE = new DefaultEventLayout();
104
105 // ------------------------------------------------------------------------
106 // Event names
107 // ------------------------------------------------------------------------
108
109 @Override
110 public String eventIrqHandlerEntry() {
111 return IRQ_HANDLER_ENTRY;
112 }
113
114 @Override
115 public String eventIrqHandlerExit() {
116 return IRQ_HANDLER_EXIT;
117 }
118
119 @Override
120 public String eventSoftIrqEntry() {
121 return SOFTIRQ_ENTRY;
122 }
123
124 @Override
125 public String eventSoftIrqExit() {
126 return SOFTIRQ_EXIT;
127 }
128
129 @Override
130 public String eventSoftIrqRaise() {
131 return SOFTIRQ_RAISE;
132 }
133
134 @Override
135 public String eventSchedSwitch() {
136 return SCHED_SWITCH;
137 }
138
139 /**
140 * @since 1.0
141 */
142 @Override
143 public String eventSchedPiSetprio() {
144 return SCHED_PI_SETPRIO;
145 }
146
147 @Override
148 public Collection<String> eventsSchedWakeup() {
149 return SCHED_WAKEUP_EVENTS;
150 }
151
152 @Override
153 public String eventSchedProcessFork() {
154 return SCHED_PROCESS_FORK;
155 }
156
157 @Override
158 public String eventSchedProcessExit() {
159 return SCHED_PROCESS_EXIT;
160 }
161
162 @Override
163 public String eventSchedProcessFree() {
164 return SCHED_PROCESS_FREE;
165 }
166
167 @Override
168 public @NonNull String eventStatedumpProcessState() {
169 return STATEDUMP_PROCESS_STATE;
170 }
171
172 @Override
173 public String eventSyscallEntryPrefix() {
174 return SYSCALL_ENTRY_PREFIX;
175 }
176
177 @Override
178 public String eventCompatSyscallEntryPrefix() {
179 return COMPAT_SYSCALL_ENTRY_PREFIX;
180 }
181
182 @Override
183 public String eventSyscallExitPrefix() {
184 return SYSCALL_EXIT_PREFIX;
185 }
186
187 /** @since 2.0 */
188 @Override
189 public String eventCompatSyscallExitPrefix() {
190 return SYSCALL_EXIT_PREFIX;
191 }
192
193 // ------------------------------------------------------------------------
194 // Event field names
195 // ------------------------------------------------------------------------
196
197 @Override
198 public String fieldIrq() {
199 return IRQ;
200 }
201
202 @Override
203 public String fieldVec() {
204 return VEC;
205 }
206
207 @Override
208 public String fieldTid() {
209 return TID;
210 }
211
212 @Override
213 public String fieldPrevTid() {
214 return PREV_TID;
215 }
216
217 @Override
218 public String fieldPrevState() {
219 return PREV_STATE;
220 }
221
222 @Override
223 public String fieldNextComm() {
224 return NEXT_COMM;
225 }
226
227 @Override
228 public String fieldNextTid() {
229 return NEXT_TID;
230 }
231
232 @Override
233 public String fieldChildComm() {
234 return CHILD_COMM;
235 }
236
237 @Override
238 public String fieldParentTid() {
239 return PARENT_TID;
240 }
241
242 @Override
243 public String fieldChildTid() {
244 return CHILD_TID;
245 }
246
247 /** @since 1.0 */
248 @Override
249 public String fieldPrio() {
250 return PRIO;
251 }
252
253 /** @since 1.0 */
254 @Override
255 public String fieldNewPrio() {
256 return NEW_PRIO;
257 }
258
259 /** @since 1.0 */
260 @Override
261 public String fieldNextPrio() {
262 return NEXT_PRIO;
263 }
264
265 /** @since 2.0 */
266 @Override
267 public String fieldComm() {
268 return COMM;
269 }
270
271 /** @since 2.0 */
272 @Override
273 public String fieldName() {
274 return NAME;
275 }
276
277 /** @since 2.0 */
278 @Override
279 public String fieldStatus() {
280 return STATUS;
281 }
282
283 /** @since 2.0 */
284 @Override
285 public String fieldPrevComm() {
286 return PREV_COMM;
287 }
288
289 /** @since 2.0 */
290 @Override
291 public String fieldFilename() {
292 return FILENAME;
293 }
294
295 /** @since 2.0 */
296 @Override
297 public String eventSchedProcessExec() {
298 return SCHED_PROCESS_EXEC;
299 }
300
301 /** @since 2.0 */
302 @Override
303 public String eventSchedProcessWakeup() {
304 return SCHED_WAKEUP;
305 }
306
307 /** @since 2.0 */
308 @Override
309 public String eventSchedProcessWakeupNew() {
310 return SCHED_WAKEUP_NEW;
311 }
312
313 /** @since 2.0 */
314 @Override
315 public String eventHRTimerStart() {
316 return HRTIMER_START;
317 }
318
319 /** @since 2.0 */
320 @Override
321 public String eventHRTimerCancel() {
322 return HRTIMER_CANCEL;
323 }
324
325 /** @since 2.0 */
326 @Override
327 public String eventHRTimerExpireEntry() {
328 return HRTIMER_EXPIRE_ENTRY;
329 }
330
331 /** @since 2.0 */
332 @Override
333 public String eventHRTimerExpireExit() {
334 return HRTIMER_EXPIRE_EXIT;
335 }
336
337 /**
338 * Event indicating the source of the wakeup signal.
339 *
340 * @return The name of the event
341 * @since 2.0
342 */
343 public String eventSchedProcessTTWU() {
344 return SCHED_TTWU;
345 }
346
347 /** @since 2.0 */
348 @Override
349 public String fieldHRtimer() {
350 return HRTIMER;
351 }
352
353 /** @since 2.0 */
354 @Override
355 public String fieldHRtimerFunction() {
356 return FUNCTION;
357 }
358
359 /** @since 2.0 */
360 @Override
361 public String fieldHRtimerExpires() {
362 return EXPIRES;
363 }
364
365 /** @since 2.0 */
366 @Override
367 public String fieldHRtimerSoftexpires() {
368 return SOFT_EXPIRES;
369 }
370
371 /** @since 2.0 */
372 @Override
373 public String fieldHRtimerNow() {
374 return NOW;
375 }
376
377 /**
378 * Event indicating the source of the wakeup signal.
379 *
380 * @return The name of the event
381 * @since 2.0
382 */
383 public String eventSchedProcessWaking() {
384 return SCHED_WAKING;
385 }
386
387 }
This page took 0.058318 seconds and 4 git commands to generate.