00d755308084e7998bc721591c8a2bc8e41ed27b
[deliverable/tracecompass.git] / 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 SCHED_SWITCH = "sched_switch"; //$NON-NLS-1$
42 private static final String SCHED_PI_SETPRIO = "sched_pi_setprio"; //$NON-NLS-1$
43
44 private static final Collection<String> SCHED_WAKEUP_EVENTS =
45 checkNotNull(ImmutableList.of("sched_wakeup", "sched_wakeup_new")); //$NON-NLS-1$ //$NON-NLS-2$
46
47 private static final String SCHED_PROCESS_FORK = "sched_process_fork"; //$NON-NLS-1$
48 private static final String SCHED_PROCESS_EXIT = "sched_process_exit"; //$NON-NLS-1$
49 private static final String SCHED_PROCESS_FREE = "sched_process_free"; //$NON-NLS-1$
50 private static final String STATEDUMP_PROCESS_STATE = "lttng_statedump_process_state"; //$NON-NLS-1$
51
52 private static final String SYSCALL_ENTRY_PREFIX = "sys_"; //$NON-NLS-1$
53 private static final String COMPAT_SYSCALL_ENTRY_PREFIX = "compat_sys_"; //$NON-NLS-1$
54 private static final String SYSCALL_EXIT_PREFIX = "exit_syscall"; //$NON-NLS-1$
55
56 /* Field names */
57 private static final String IRQ = "irq"; //$NON-NLS-1$
58 private static final String TID = "tid"; //$NON-NLS-1$
59 private static final String VEC = "vec"; //$NON-NLS-1$
60 private static final String PREV_TID = "prev_tid"; //$NON-NLS-1$
61 private static final String PREV_STATE = "prev_state"; //$NON-NLS-1$
62 private static final String NEXT_COMM = "next_comm"; //$NON-NLS-1$
63 private static final String NEXT_TID = "next_tid"; //$NON-NLS-1$
64 private static final String PARENT_TID = "parent_tid"; //$NON-NLS-1$
65 private static final String CHILD_COMM = "child_comm"; //$NON-NLS-1$
66 private static final String CHILD_TID = "child_tid"; //$NON-NLS-1$
67 private static final String PRIO = "prio"; //$NON-NLS-1$
68 private static final String NEW_PRIO = "newprio"; //$NON-NLS-1$
69 private static final String NEXT_PRIO = "next_prio"; //$NON-NLS-1$
70
71 /** All instances are the same. Only provide a static instance getter */
72 private DefaultEventLayout() {
73 }
74
75 /**
76 * The instance of this event layout
77 *
78 * This object is completely immutable, so no need to create additional
79 * instances via the constructor.
80 */
81 static final IKernelAnalysisEventLayout INSTANCE = new DefaultEventLayout();
82
83 // ------------------------------------------------------------------------
84 // Event names
85 // ------------------------------------------------------------------------
86
87 @Override
88 public String eventIrqHandlerEntry() {
89 return IRQ_HANDLER_ENTRY;
90 }
91
92 @Override
93 public String eventIrqHandlerExit() {
94 return IRQ_HANDLER_EXIT;
95 }
96
97 @Override
98 public String eventSoftIrqEntry() {
99 return SOFTIRQ_ENTRY;
100 }
101
102 @Override
103 public String eventSoftIrqExit() {
104 return SOFTIRQ_EXIT;
105 }
106
107 @Override
108 public String eventSoftIrqRaise() {
109 return SOFTIRQ_RAISE;
110 }
111
112 @Override
113 public String eventSchedSwitch() {
114 return SCHED_SWITCH;
115 }
116
117 /**
118 * @since 1.0
119 */
120 @Override
121 public String eventSchedPiSetprio() {
122 return SCHED_PI_SETPRIO;
123 }
124
125 @Override
126 public Collection<String> eventsSchedWakeup() {
127 return SCHED_WAKEUP_EVENTS;
128 }
129
130 @Override
131 public String eventSchedProcessFork() {
132 return SCHED_PROCESS_FORK;
133 }
134
135 @Override
136 public String eventSchedProcessExit() {
137 return SCHED_PROCESS_EXIT;
138 }
139
140 @Override
141 public String eventSchedProcessFree() {
142 return SCHED_PROCESS_FREE;
143 }
144
145 @Override
146 public @NonNull String eventStatedumpProcessState() {
147 return STATEDUMP_PROCESS_STATE;
148 }
149
150 @Override
151 public String eventSyscallEntryPrefix() {
152 return SYSCALL_ENTRY_PREFIX;
153 }
154
155 @Override
156 public String eventCompatSyscallEntryPrefix() {
157 return COMPAT_SYSCALL_ENTRY_PREFIX;
158 }
159
160 @Override
161 public String eventSyscallExitPrefix() {
162 return SYSCALL_EXIT_PREFIX;
163 }
164
165 // ------------------------------------------------------------------------
166 // Event field names
167 // ------------------------------------------------------------------------
168
169 @Override
170 public String fieldIrq() {
171 return IRQ;
172 }
173
174 @Override
175 public String fieldVec() {
176 return VEC;
177 }
178
179 @Override
180 public String fieldTid() {
181 return TID;
182 }
183
184 @Override
185 public String fieldPrevTid() {
186 return PREV_TID;
187 }
188
189 @Override
190 public String fieldPrevState() {
191 return PREV_STATE;
192 }
193
194 @Override
195 public String fieldNextComm() {
196 return NEXT_COMM;
197 }
198
199 @Override
200 public String fieldNextTid() {
201 return NEXT_TID;
202 }
203
204 @Override
205 public String fieldChildComm() {
206 return CHILD_COMM;
207 }
208
209 @Override
210 public String fieldParentTid() {
211 return PARENT_TID;
212 }
213
214 @Override
215 public String fieldChildTid() {
216 return CHILD_TID;
217 }
218
219 /**
220 * @since 1.0
221 */
222 @Override
223 public String fieldPrio() {
224 return PRIO;
225 }
226
227 /**
228 * @since 1.0
229 */
230 @Override
231 public String fieldNewPrio() {
232 return NEW_PRIO;
233 }
234
235 /**
236 * @since 1.0
237 */
238 @Override
239 public String fieldNextPrio() {
240 return NEXT_PRIO;
241 }
242
243 }
This page took 0.037698 seconds and 4 git commands to generate.