lttng: update and add HR timer related events and fields
[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_WAKEUP = "sched_wakeup"; //$NON-NLS-1$
50 private static final String SCHED_WAKEUP_NEW = "sched_wakeup_new"; //$NON-NLS-1$
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"; //$NON-NLS-1$
55 private static final String SCHED_PROCESS_EXIT = "sched_process_exit"; //$NON-NLS-1$
56 private static final String SCHED_PROCESS_FREE = "sched_process_free"; //$NON-NLS-1$
57 private static final String SCHED_PROCESS_EXEC = "sched_process_exec"; //$NON-NLS-1$
58 private static final String STATEDUMP_PROCESS_STATE = "lttng_statedump_process_state"; //$NON-NLS-1$
59
60 private static final String SYSCALL_ENTRY_PREFIX = "sys_"; //$NON-NLS-1$
61 private static final String COMPAT_SYSCALL_ENTRY_PREFIX = "compat_sys_"; //$NON-NLS-1$
62 private static final String SYSCALL_EXIT_PREFIX = "exit_syscall"; //$NON-NLS-1$
63
64 /* Field names */
65 private static final String IRQ = "irq"; //$NON-NLS-1$
66 private static final String TID = "tid"; //$NON-NLS-1$
67 private static final String VEC = "vec"; //$NON-NLS-1$
68 private static final String PREV_TID = "prev_tid"; //$NON-NLS-1$
69 private static final String PREV_STATE = "prev_state"; //$NON-NLS-1$
70 private static final String NEXT_COMM = "next_comm"; //$NON-NLS-1$
71 private static final String NEXT_TID = "next_tid"; //$NON-NLS-1$
72 private static final String PARENT_TID = "parent_tid"; //$NON-NLS-1$
73 private static final String CHILD_COMM = "child_comm"; //$NON-NLS-1$
74 private static final String CHILD_TID = "child_tid"; //$NON-NLS-1$
75 private static final String PRIO = "prio"; //$NON-NLS-1$
76 private static final String NEW_PRIO = "newprio"; //$NON-NLS-1$
77 private static final String NEXT_PRIO = "next_prio"; //$NON-NLS-1$
78 private static final String COMM = "comm"; //$NON-NLS-1$
79 private static final String NAME = "name"; //$NON-NLS-1$
80 private static final String STATUS = "status"; //$NON-NLS-1$
81 private static final String PREV_COMM = "prev_comm"; //$NON-NLS-1$
82 private static final String FILENAME = "filename"; //$NON-NLS-1$
83 private static final String HRTIMER = "hrtimer"; //$NON-NLS-1$
84 private static final String FUNCTION = "function"; //$NON-NLS-1$
85 private static final String EXPIRES = "expires"; //$NON-NLS-1$
86 private static final String NOW = "now"; //$NON-NLS-1$
87 private static final String SOFT_EXPIRES = "softexpires"; //$NON-NLS-1$
88
89 /** All instances are the same. Only provide a static instance getter */
90 private DefaultEventLayout() {
91 }
92
93 /**
94 * The instance of this event layout
95 *
96 * This object is completely immutable, so no need to create additional
97 * instances via the constructor.
98 */
99 static final IKernelAnalysisEventLayout INSTANCE = new DefaultEventLayout();
100
101 // ------------------------------------------------------------------------
102 // Event names
103 // ------------------------------------------------------------------------
104
105 @Override
106 public String eventIrqHandlerEntry() {
107 return IRQ_HANDLER_ENTRY;
108 }
109
110 @Override
111 public String eventIrqHandlerExit() {
112 return IRQ_HANDLER_EXIT;
113 }
114
115 @Override
116 public String eventSoftIrqEntry() {
117 return SOFTIRQ_ENTRY;
118 }
119
120 @Override
121 public String eventSoftIrqExit() {
122 return SOFTIRQ_EXIT;
123 }
124
125 @Override
126 public String eventSoftIrqRaise() {
127 return SOFTIRQ_RAISE;
128 }
129
130 @Override
131 public String eventSchedSwitch() {
132 return SCHED_SWITCH;
133 }
134
135 /**
136 * @since 1.0
137 */
138 @Override
139 public String eventSchedPiSetprio() {
140 return SCHED_PI_SETPRIO;
141 }
142
143 @Override
144 public Collection<String> eventsSchedWakeup() {
145 return SCHED_WAKEUP_EVENTS;
146 }
147
148 @Override
149 public String eventSchedProcessFork() {
150 return SCHED_PROCESS_FORK;
151 }
152
153 @Override
154 public String eventSchedProcessExit() {
155 return SCHED_PROCESS_EXIT;
156 }
157
158 @Override
159 public String eventSchedProcessFree() {
160 return SCHED_PROCESS_FREE;
161 }
162
163 @Override
164 public @NonNull String eventStatedumpProcessState() {
165 return STATEDUMP_PROCESS_STATE;
166 }
167
168 @Override
169 public String eventSyscallEntryPrefix() {
170 return SYSCALL_ENTRY_PREFIX;
171 }
172
173 @Override
174 public String eventCompatSyscallEntryPrefix() {
175 return COMPAT_SYSCALL_ENTRY_PREFIX;
176 }
177
178 @Override
179 public String eventSyscallExitPrefix() {
180 return SYSCALL_EXIT_PREFIX;
181 }
182
183 // ------------------------------------------------------------------------
184 // Event field names
185 // ------------------------------------------------------------------------
186
187 @Override
188 public String fieldIrq() {
189 return IRQ;
190 }
191
192 @Override
193 public String fieldVec() {
194 return VEC;
195 }
196
197 @Override
198 public String fieldTid() {
199 return TID;
200 }
201
202 @Override
203 public String fieldPrevTid() {
204 return PREV_TID;
205 }
206
207 @Override
208 public String fieldPrevState() {
209 return PREV_STATE;
210 }
211
212 @Override
213 public String fieldNextComm() {
214 return NEXT_COMM;
215 }
216
217 @Override
218 public String fieldNextTid() {
219 return NEXT_TID;
220 }
221
222 @Override
223 public String fieldChildComm() {
224 return CHILD_COMM;
225 }
226
227 @Override
228 public String fieldParentTid() {
229 return PARENT_TID;
230 }
231
232 @Override
233 public String fieldChildTid() {
234 return CHILD_TID;
235 }
236
237 /** @since 1.0 */
238 @Override
239 public String fieldPrio() {
240 return PRIO;
241 }
242
243 /** @since 1.0 */
244 @Override
245 public String fieldNewPrio() {
246 return NEW_PRIO;
247 }
248
249 /** @since 1.0 */
250 @Override
251 public String fieldNextPrio() {
252 return NEXT_PRIO;
253 }
254
255 /** @since 2.0 */
256 @Override
257 public String fieldComm() {
258 return COMM;
259 }
260
261 /** @since 2.0 */
262 @Override
263 public String fieldName() {
264 return NAME;
265 }
266
267 /** @since 2.0 */
268 @Override
269 public String fieldStatus() {
270 return STATUS;
271 }
272
273 /** @since 2.0 */
274 @Override
275 public String fieldPrevComm() {
276 return PREV_COMM;
277 }
278
279 /** @since 2.0 */
280 @Override
281 public String fieldFilename() {
282 return FILENAME;
283 }
284
285 /** @since 2.0 */
286 @Override
287 public String eventSchedProcessExec() {
288 return SCHED_PROCESS_EXEC;
289 }
290
291 /** @since 2.0 */
292 @Override
293 public String eventSchedProcessWakeup() {
294 return SCHED_WAKEUP;
295 }
296
297 /** @since 2.0 */
298 @Override
299 public String eventSchedProcessWakeupNew() {
300 return SCHED_WAKEUP_NEW;
301 }
302
303 /** @since 2.0 */
304 @Override
305 public String eventHRTimerStart() {
306 return HRTIMER_START;
307 }
308
309 /** @since 2.0 */
310 @Override
311 public String eventHRTimerCancel() {
312 return HRTIMER_CANCEL;
313 }
314
315 /** @since 2.0 */
316 @Override
317 public String eventHRTimerExpireEntry() {
318 return HRTIMER_EXPIRE_ENTRY;
319 }
320
321 /** @since 2.0 */
322 @Override
323 public String eventHRTimerExpireExit() {
324 return HRTIMER_EXPIRE_EXIT;
325 }
326
327 /**
328 * Event indicating the source of the wakeup signal.
329 *
330 * @return The name of the event
331 * @since 2.0
332 */
333 public String eventSchedProcessTTWU() {
334 return SCHED_TTWU;
335 }
336
337 /** @since 2.0 */
338 @Override
339 public String fieldHRtimer() {
340 return HRTIMER;
341 }
342
343 /** @since 2.0 */
344 @Override
345 public String fieldHRtimerFunction() {
346 return FUNCTION;
347 }
348
349 /** @since 2.0 */
350 @Override
351 public String fieldHRtimerExpires() {
352 return EXPIRES;
353 }
354
355 /** @since 2.0 */
356 @Override
357 public String fieldHRtimerSoftexpires() {
358 return SOFT_EXPIRES;
359 }
360
361 /** @since 2.0 */
362 @Override
363 public String fieldHRtimerNow() {
364 return NOW;
365 }
366
367 }
This page took 0.044366 seconds and 5 git commands to generate.