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