1 /*******************************************************************************
2 * Copyright (c) 2012, 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
.internal
.lttng2
.kernel
.core
.trace
.layout
;
15 import java
.util
.Collection
;
17 import org
.eclipse
.jdt
.annotation
.NonNull
;
18 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.trace
.IKernelAnalysisEventLayout
;
20 import com
.google
.common
.collect
.ImmutableList
;
23 * This file defines all the known event and field names for LTTng kernel
24 * traces, for versions of lttng-modules up to 2.5.
26 * These should not be externalized, since they need to match exactly what the
27 * tracer outputs. If you want to localize them in a view, you should do a
28 * mapping in the view itself.
30 * @author Alexandre Montplaisir
32 @SuppressWarnings("nls")
33 public class LttngEventLayout
implements IKernelAnalysisEventLayout
{
36 private static final String IRQ_HANDLER_ENTRY
= "irq_handler_entry";
37 private static final String IRQ_HANDLER_EXIT
= "irq_handler_exit";
38 private static final String SOFTIRQ_ENTRY
= "softirq_entry";
39 private static final String SOFTIRQ_EXIT
= "softirq_exit";
40 private static final String SOFTIRQ_RAISE
= "softirq_raise";
41 private static final String HRTIMER_START
= "hrtimer_start";
42 private static final String HRTIMER_CANCEL
= "hrtimer_cancel";
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";
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 ImmutableList
.of(SCHED_WAKEUP
, SCHED_WAKEUP_NEW
);
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";
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";
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 private static final String HRTIMER
= "hrtimer";
84 private static final String HRTIMER_FUNCTION
= "function";
85 private static final String HRTIMER_EXPIRES
= "expires";
86 private static final String HRTIMER_NOW
= "now";
87 private static final String HRTIMER_SOFT_EXPIRES
= "softexpires";
88 private static final String KMEM_ALLOC
= "mm_page_alloc";
89 private static final String KMEM_FREE
= "mm_page_free";
91 /** All instances are the same. Only provide a static instance getter */
92 protected LttngEventLayout() {
95 private static final IKernelAnalysisEventLayout INSTANCE
= new LttngEventLayout();
98 * Get an instance of this event layout
100 * This object is completely immutable, so no need to create additional
101 * instances via the constructor.
103 * @return The instance
105 public static IKernelAnalysisEventLayout
getInstance() {
109 // ------------------------------------------------------------------------
111 // ------------------------------------------------------------------------
114 public String
eventIrqHandlerEntry() {
115 return IRQ_HANDLER_ENTRY
;
119 public String
eventIrqHandlerExit() {
120 return IRQ_HANDLER_EXIT
;
124 public String
eventSoftIrqEntry() {
125 return SOFTIRQ_ENTRY
;
129 public String
eventSoftIrqExit() {
134 public String
eventSoftIrqRaise() {
135 return SOFTIRQ_RAISE
;
139 public String
eventSchedSwitch() {
144 public String
eventSchedPiSetprio() {
145 return SCHED_PI_SETPRIO
;
149 public Collection
<String
> eventsSchedWakeup() {
150 return SCHED_WAKEUP_EVENTS
;
154 public String
eventSchedProcessFork() {
155 return SCHED_PROCESS_FORK
;
159 public String
eventSchedProcessExit() {
160 return SCHED_PROCESS_EXIT
;
164 public String
eventSchedProcessFree() {
165 return SCHED_PROCESS_FREE
;
169 public @NonNull String
eventStatedumpProcessState() {
170 return STATEDUMP_PROCESS_STATE
;
174 public String
eventSyscallEntryPrefix() {
175 return SYSCALL_ENTRY_PREFIX
;
179 public String
eventCompatSyscallEntryPrefix() {
180 return COMPAT_SYSCALL_ENTRY_PREFIX
;
184 public String
eventSyscallExitPrefix() {
185 return SYSCALL_EXIT_PREFIX
;
189 public String
eventCompatSyscallExitPrefix() {
191 * In LTTng < 2.6, the same generic event name is used for both standard
192 * and compat syscalls.
194 return SYSCALL_EXIT_PREFIX
;
201 public String
eventKmemPageAlloc() {
209 public String
eventKmemPageFree() {
213 // ------------------------------------------------------------------------
215 // ------------------------------------------------------------------------
218 public String
fieldIrq() {
223 public String
fieldVec() {
228 public String
fieldTid() {
233 public String
fieldPrevTid() {
238 public String
fieldPrevState() {
243 public String
fieldNextComm() {
248 public String
fieldNextTid() {
253 public String
fieldChildComm() {
258 public String
fieldParentTid() {
263 public String
fieldChildTid() {
268 public String
fieldPrio() {
273 public String
fieldNewPrio() {
278 public String
fieldNextPrio() {
283 public String
fieldComm() {
288 public String
fieldName() {
293 public String
fieldStatus() {
298 public String
fieldPrevComm() {
303 public String
fieldFilename() {
308 public String
eventSchedProcessExec() {
309 return SCHED_PROCESS_EXEC
;
313 public String
eventSchedProcessWakeup() {
318 public String
eventSchedProcessWakeupNew() {
319 return SCHED_WAKEUP_NEW
;
323 public String
eventHRTimerStart() {
324 return HRTIMER_START
;
328 public String
eventHRTimerCancel() {
329 return HRTIMER_CANCEL
;
333 public String
eventHRTimerExpireEntry() {
334 return HRTIMER_EXPIRE_ENTRY
;
338 public String
eventHRTimerExpireExit() {
339 return HRTIMER_EXPIRE_EXIT
;
343 * Event indicating the source of the wakeup signal.
345 * @return The name of the event
348 public String
eventSchedProcessTTWU() {
353 public String
fieldHRtimer() {
357 public String
fieldHRtimerFunction() {
358 return HRTIMER_FUNCTION
;
362 public String
fieldHRtimerExpires() {
363 return HRTIMER_EXPIRES
;
367 public String
fieldHRtimerSoftexpires() {
368 return HRTIMER_SOFT_EXPIRES
;
371 public String
fieldHRtimerNow() {