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