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