1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
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
10 * Alexandre Montplaisir - Initial API and implementation
11 ******************************************************************************/
13 package org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.trace
;
15 import java
.util
.Collection
;
17 import org
.eclipse
.jdt
.annotation
.NonNull
;
18 import org
.eclipse
.jdt
.annotation
.Nullable
;
20 import com
.google
.common
.collect
.ImmutableList
;
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
27 * Due to historical reasons, the definitions are the same as LTTng event names.
29 * @author Alexandre Montplaisir
32 public class DefaultEventLayout
implements IKernelAnalysisEventLayout
{
34 private static @Nullable DefaultEventLayout INSTANCE
;
37 * The instance of this event layout
39 * This object is completely immutable, so no need to create additional
40 * instances via the constructor.
42 * @return the instance
45 public static synchronized DefaultEventLayout
getInstance() {
46 DefaultEventLayout inst
= INSTANCE
;
48 inst
= new DefaultEventLayout();
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$
60 private static final String HRTIMER_START
= "hrtimer_start"; //$NON-NLS-1$
61 private static final String HRTIMER_CANCEL
= "hrtimer_cancel"; //$NON-NLS-1$
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$
64 private static final String SCHED_SWITCH
= "sched_switch"; //$NON-NLS-1$
65 private static final String SCHED_PI_SETPRIO
= "sched_pi_setprio"; //$NON-NLS-1$
67 private static final String SCHED_TTWU
= "sched_ttwu"; //$NON-NLS-1$
68 private static final String SCHED_WAKING
= "sched_waking"; //$NON-NLS-1$
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$
71 private static final Collection
<String
> SCHED_WAKEUP_EVENTS
= ImmutableList
.of(SCHED_WAKEUP
, SCHED_WAKEUP_NEW
);
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$
76 private static final String SCHED_PROCESS_EXEC
= "sched_process_exec"; //$NON-NLS-1$
77 private static final String STATEDUMP_PROCESS_STATE
= "lttng_statedump_process_state"; //$NON-NLS-1$
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$
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$
94 private static final String PRIO
= "prio"; //$NON-NLS-1$
95 private static final String NEW_PRIO
= "newprio"; //$NON-NLS-1$
96 private static final String PREV_PRIO
= "prev_prio"; //$NON-NLS-1$
97 private static final String NEXT_PRIO
= "next_prio"; //$NON-NLS-1$
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$
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$
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$
112 * Constructor, to be used by classes extending this one. To get an instance
113 * of this class, INSTANCE should be used.
117 protected DefaultEventLayout() {
120 // ------------------------------------------------------------------------
122 // ------------------------------------------------------------------------
125 public String
eventIrqHandlerEntry() {
126 return IRQ_HANDLER_ENTRY
;
130 public String
eventIrqHandlerExit() {
131 return IRQ_HANDLER_EXIT
;
135 public String
eventSoftIrqEntry() {
136 return SOFTIRQ_ENTRY
;
140 public String
eventSoftIrqExit() {
145 public String
eventSoftIrqRaise() {
146 return SOFTIRQ_RAISE
;
150 public String
eventSchedSwitch() {
158 public String
eventSchedPiSetprio() {
159 return SCHED_PI_SETPRIO
;
163 public Collection
<String
> eventsSchedWakeup() {
164 return SCHED_WAKEUP_EVENTS
;
168 public String
eventSchedProcessFork() {
169 return SCHED_PROCESS_FORK
;
173 public String
eventSchedProcessExit() {
174 return SCHED_PROCESS_EXIT
;
178 public String
eventSchedProcessFree() {
179 return SCHED_PROCESS_FREE
;
183 public @NonNull String
eventStatedumpProcessState() {
184 return STATEDUMP_PROCESS_STATE
;
188 public String
eventSyscallEntryPrefix() {
189 return SYSCALL_ENTRY_PREFIX
;
193 public String
eventCompatSyscallEntryPrefix() {
194 return COMPAT_SYSCALL_ENTRY_PREFIX
;
198 public String
eventSyscallExitPrefix() {
199 return SYSCALL_EXIT_PREFIX
;
204 public String
eventCompatSyscallExitPrefix() {
205 return SYSCALL_EXIT_PREFIX
;
212 public String
eventKmemPageAlloc() {
220 public String
eventKmemPageFree() {
225 // ------------------------------------------------------------------------
227 // ------------------------------------------------------------------------
230 public String
fieldIrq() {
235 public String
fieldVec() {
240 public String
fieldTid() {
245 public String
fieldPrevTid() {
250 public String
fieldPrevState() {
255 public String
fieldNextComm() {
260 public String
fieldNextTid() {
265 public String
fieldChildComm() {
270 public String
fieldParentTid() {
275 public String
fieldChildTid() {
281 public String
fieldPrio() {
287 public String
fieldNewPrio() {
295 public String
fieldPrevPrio() {
301 public String
fieldNextPrio() {
307 public String
fieldComm() {
313 public String
fieldName() {
319 public String
fieldStatus() {
325 public String
fieldPrevComm() {
331 public String
fieldFilename() {
337 public String
eventSchedProcessExec() {
338 return SCHED_PROCESS_EXEC
;
343 public String
eventSchedProcessWakeup() {
349 public String
eventSchedProcessWakeupNew() {
350 return SCHED_WAKEUP_NEW
;
355 public String
eventHRTimerStart() {
356 return HRTIMER_START
;
361 public String
eventHRTimerCancel() {
362 return HRTIMER_CANCEL
;
367 public String
eventHRTimerExpireEntry() {
368 return HRTIMER_EXPIRE_ENTRY
;
373 public String
eventHRTimerExpireExit() {
374 return HRTIMER_EXPIRE_EXIT
;
378 * Event indicating the source of the wakeup signal.
380 * @return The name of the event
383 public String
eventSchedProcessTTWU() {
389 public String
fieldHRtimer() {
395 public String
fieldHRtimerFunction() {
401 public String
fieldHRtimerExpires() {
407 public String
fieldHRtimerSoftexpires() {
413 public String
fieldHRtimerNow() {
418 * Event indicating the source of the wakeup signal.
420 * @return The name of the event
423 public String
eventSchedProcessWaking() {