analysis: Add definition for extended events and fields
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.kernel.core / src / org / eclipse / tracecompass / internal / lttng2 / kernel / core / trace / layout / LttngEventLayout.java
1 /*******************************************************************************
2 * Copyright (c) 2012, 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.internal.lttng2.kernel.core.trace.layout;
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 import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
21
22 import com.google.common.collect.ImmutableList;
23
24 /**
25 * This file defines all the known event and field names for LTTng kernel
26 * traces, for versions of lttng-modules up to 2.5.
27 *
28 * These should not be externalized, since they need to match exactly what the
29 * tracer outputs. If you want to localize them in a view, you should do a
30 * mapping in the view itself.
31 *
32 * @author Alexandre Montplaisir
33 */
34 @SuppressWarnings("nls")
35 public class LttngEventLayout implements IKernelAnalysisEventLayout {
36
37 /* Event names */
38 private static final String IRQ_HANDLER_ENTRY = "irq_handler_entry";
39 private static final String IRQ_HANDLER_EXIT = "irq_handler_exit";
40 private static final String SOFTIRQ_ENTRY = "softirq_entry";
41 private static final String SOFTIRQ_EXIT = "softirq_exit";
42 private static final String SOFTIRQ_RAISE = "softirq_raise";
43 private static final String HRTIMER_EXPIRE_ENTRY = "hrtimer_expire_entry";
44 private static final String HRTIMER_EXPIRE_EXIT = "hrtimer_expire_exit";
45 private static final String SCHED_SWITCH = "sched_switch";
46 private static final String SCHED_PI_SETPRIO = "sched_pi_setprio";
47
48 private static final String SCHED_TTWU = "sched_ttwu";
49 private static final String SCHED_WAKEUP = "sched_wakeup";
50 private static final String SCHED_WAKEUP_NEW = "sched_wakeup_new";
51 private static final Collection<String> SCHED_WAKEUP_EVENTS =
52 checkNotNull(ImmutableList.of(SCHED_WAKEUP, SCHED_WAKEUP_NEW));
53
54 private static final String SCHED_PROCESS_FORK = "sched_process_fork";
55 private static final String SCHED_PROCESS_EXIT = "sched_process_exit";
56 private static final String SCHED_PROCESS_FREE = "sched_process_free";
57 private static final String SCHED_PROCESS_EXEC = "sched_process_exec";
58 private static final String STATEDUMP_PROCESS_STATE = "lttng_statedump_process_state";
59
60 private static final String SYSCALL_ENTRY_PREFIX = "sys_";
61 private static final String COMPAT_SYSCALL_ENTRY_PREFIX = "compat_sys_";
62 private static final String SYSCALL_EXIT_PREFIX = "exit_syscall";
63
64 /* Field names */
65 private static final String IRQ = "irq";
66 private static final String TID = "tid";
67 private static final String VEC = "vec";
68 private static final String PREV_TID = "prev_tid";
69 private static final String PREV_STATE = "prev_state";
70 private static final String NEXT_COMM = "next_comm";
71 private static final String NEXT_TID = "next_tid";
72 private static final String PARENT_TID = "parent_tid";
73 private static final String CHILD_COMM = "child_comm";
74 private static final String CHILD_TID = "child_tid";
75 private static final String PRIO = "prio";
76 private static final String NEXT_PRIO = "next_prio";
77 private static final String NEW_PRIO = "newprio";
78 private static final String COMM = "comm";
79 private static final String NAME = "name";
80 private static final String STATUS = "status";
81 private static final String PREV_COMM = "prev_comm";
82 private static final String FILENAME = "filename";
83
84 /** All instances are the same. Only provide a static instance getter */
85 protected LttngEventLayout() {
86 }
87
88 private static final IKernelAnalysisEventLayout INSTANCE = new LttngEventLayout();
89
90 /**
91 * Get an instance of this event layout
92 *
93 * This object is completely immutable, so no need to create additional
94 * instances via the constructor.
95 *
96 * @return The instance
97 */
98 public static IKernelAnalysisEventLayout getInstance() {
99 return INSTANCE;
100 }
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 @Override
137 public String eventSchedPiSetprio() {
138 return SCHED_PI_SETPRIO;
139 }
140
141 @Override
142 public Collection<String> eventsSchedWakeup() {
143 return SCHED_WAKEUP_EVENTS;
144 }
145
146 @Override
147 public String eventSchedProcessFork() {
148 return SCHED_PROCESS_FORK;
149 }
150
151 @Override
152 public String eventSchedProcessExit() {
153 return SCHED_PROCESS_EXIT;
154 }
155
156 @Override
157 public String eventSchedProcessFree() {
158 return SCHED_PROCESS_FREE;
159 }
160
161 @Override
162 public @NonNull String eventStatedumpProcessState() {
163 return STATEDUMP_PROCESS_STATE;
164 }
165
166 @Override
167 public String eventSyscallEntryPrefix() {
168 return SYSCALL_ENTRY_PREFIX;
169 }
170
171 @Override
172 public String eventCompatSyscallEntryPrefix() {
173 return COMPAT_SYSCALL_ENTRY_PREFIX;
174 }
175
176 @Override
177 public String eventSyscallExitPrefix() {
178 return SYSCALL_EXIT_PREFIX;
179 }
180
181 // ------------------------------------------------------------------------
182 // Event field names
183 // ------------------------------------------------------------------------
184
185 @Override
186 public String fieldIrq() {
187 return IRQ;
188 }
189
190 @Override
191 public String fieldVec() {
192 return VEC;
193 }
194
195 @Override
196 public String fieldTid() {
197 return TID;
198 }
199
200 @Override
201 public String fieldPrevTid() {
202 return PREV_TID;
203 }
204
205 @Override
206 public String fieldPrevState() {
207 return PREV_STATE;
208 }
209
210 @Override
211 public String fieldNextComm() {
212 return NEXT_COMM;
213 }
214
215 @Override
216 public String fieldNextTid() {
217 return NEXT_TID;
218 }
219
220 @Override
221 public String fieldChildComm() {
222 return CHILD_COMM;
223 }
224
225 @Override
226 public String fieldParentTid() {
227 return PARENT_TID;
228 }
229
230 @Override
231 public String fieldChildTid() {
232 return CHILD_TID;
233 }
234
235 @Override
236 public String fieldPrio() {
237 return PRIO;
238 }
239
240 @Override
241 public String fieldNewPrio() {
242 return NEW_PRIO;
243 }
244
245 @Override
246 public String fieldNextPrio() {
247 return NEXT_PRIO;
248 }
249
250 @Override
251 public String fieldComm() {
252 return COMM;
253 }
254
255 @Override
256 public String fieldName() {
257 return NAME;
258 }
259
260 @Override
261 public String fieldStatus() {
262 return STATUS;
263 }
264
265 @Override
266 public String fieldPrevComm() {
267 return PREV_COMM;
268 }
269
270 @Override
271 public String fieldFilename() {
272 return FILENAME;
273 }
274
275 @Override
276 public String eventSchedProcessExec() {
277 return SCHED_PROCESS_EXEC;
278 }
279
280 @Override
281 public String eventSchedProcessWakeup() {
282 return SCHED_WAKEUP;
283 }
284
285 @Override
286 public String eventSchedProcessWakeupNew() {
287 return SCHED_WAKEUP_NEW;
288 }
289
290 @Override
291 public String eventHRTimerExpireEntry() {
292 return HRTIMER_EXPIRE_ENTRY;
293 }
294
295 @Override
296 public String eventHRTimerExpireExit() {
297 return HRTIMER_EXPIRE_EXIT;
298 }
299
300 /**
301 * Event indicating the source of the wakeup signal.
302 *
303 * @return The name of the event
304 * @since 2.0
305 */
306 public String eventSchedProcessTTWU() {
307 return SCHED_TTWU;
308 }
309 }
This page took 0.038612 seconds and 5 git commands to generate.