analysis.os: New kernel memory usage view with Unit tests
[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 java.util.Collection;
16
17 import org.eclipse.jdt.annotation.NonNull;
18 import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
19
20 import com.google.common.collect.ImmutableList;
21
22 /**
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.
25 *
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.
29 *
30 * @author Alexandre Montplaisir
31 */
32 @SuppressWarnings("nls")
33 public class LttngEventLayout implements IKernelAnalysisEventLayout {
34
35 /* Event names */
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";
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 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 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";
90
91 /** All instances are the same. Only provide a static instance getter */
92 protected LttngEventLayout() {
93 }
94
95 private static final IKernelAnalysisEventLayout INSTANCE = new LttngEventLayout();
96
97 /**
98 * Get an instance of this event layout
99 *
100 * This object is completely immutable, so no need to create additional
101 * instances via the constructor.
102 *
103 * @return The instance
104 */
105 public static IKernelAnalysisEventLayout getInstance() {
106 return INSTANCE;
107 }
108
109 // ------------------------------------------------------------------------
110 // Event names
111 // ------------------------------------------------------------------------
112
113 @Override
114 public String eventIrqHandlerEntry() {
115 return IRQ_HANDLER_ENTRY;
116 }
117
118 @Override
119 public String eventIrqHandlerExit() {
120 return IRQ_HANDLER_EXIT;
121 }
122
123 @Override
124 public String eventSoftIrqEntry() {
125 return SOFTIRQ_ENTRY;
126 }
127
128 @Override
129 public String eventSoftIrqExit() {
130 return SOFTIRQ_EXIT;
131 }
132
133 @Override
134 public String eventSoftIrqRaise() {
135 return SOFTIRQ_RAISE;
136 }
137
138 @Override
139 public String eventSchedSwitch() {
140 return SCHED_SWITCH;
141 }
142
143 @Override
144 public String eventSchedPiSetprio() {
145 return SCHED_PI_SETPRIO;
146 }
147
148 @Override
149 public Collection<String> eventsSchedWakeup() {
150 return SCHED_WAKEUP_EVENTS;
151 }
152
153 @Override
154 public String eventSchedProcessFork() {
155 return SCHED_PROCESS_FORK;
156 }
157
158 @Override
159 public String eventSchedProcessExit() {
160 return SCHED_PROCESS_EXIT;
161 }
162
163 @Override
164 public String eventSchedProcessFree() {
165 return SCHED_PROCESS_FREE;
166 }
167
168 @Override
169 public @NonNull String eventStatedumpProcessState() {
170 return STATEDUMP_PROCESS_STATE;
171 }
172
173 @Override
174 public String eventSyscallEntryPrefix() {
175 return SYSCALL_ENTRY_PREFIX;
176 }
177
178 @Override
179 public String eventCompatSyscallEntryPrefix() {
180 return COMPAT_SYSCALL_ENTRY_PREFIX;
181 }
182
183 @Override
184 public String eventSyscallExitPrefix() {
185 return SYSCALL_EXIT_PREFIX;
186 }
187
188 @Override
189 public String eventCompatSyscallExitPrefix() {
190 /*
191 * In LTTng < 2.6, the same generic event name is used for both standard
192 * and compat syscalls.
193 */
194 return SYSCALL_EXIT_PREFIX;
195 }
196
197 /**
198 * @since 2.0
199 */
200 @Override
201 public String eventKmemPageAlloc() {
202 return KMEM_ALLOC;
203 }
204
205 /**
206 * @since 2.0
207 */
208 @Override
209 public String eventKmemPageFree() {
210 return KMEM_FREE;
211 }
212
213 // ------------------------------------------------------------------------
214 // Event field names
215 // ------------------------------------------------------------------------
216
217 @Override
218 public String fieldIrq() {
219 return IRQ;
220 }
221
222 @Override
223 public String fieldVec() {
224 return VEC;
225 }
226
227 @Override
228 public String fieldTid() {
229 return TID;
230 }
231
232 @Override
233 public String fieldPrevTid() {
234 return PREV_TID;
235 }
236
237 @Override
238 public String fieldPrevState() {
239 return PREV_STATE;
240 }
241
242 @Override
243 public String fieldNextComm() {
244 return NEXT_COMM;
245 }
246
247 @Override
248 public String fieldNextTid() {
249 return NEXT_TID;
250 }
251
252 @Override
253 public String fieldChildComm() {
254 return CHILD_COMM;
255 }
256
257 @Override
258 public String fieldParentTid() {
259 return PARENT_TID;
260 }
261
262 @Override
263 public String fieldChildTid() {
264 return CHILD_TID;
265 }
266
267 @Override
268 public String fieldPrio() {
269 return PRIO;
270 }
271
272 @Override
273 public String fieldNewPrio() {
274 return NEW_PRIO;
275 }
276
277 @Override
278 public String fieldNextPrio() {
279 return NEXT_PRIO;
280 }
281
282 @Override
283 public String fieldComm() {
284 return COMM;
285 }
286
287 @Override
288 public String fieldName() {
289 return NAME;
290 }
291
292 @Override
293 public String fieldStatus() {
294 return STATUS;
295 }
296
297 @Override
298 public String fieldPrevComm() {
299 return PREV_COMM;
300 }
301
302 @Override
303 public String fieldFilename() {
304 return FILENAME;
305 }
306
307 @Override
308 public String eventSchedProcessExec() {
309 return SCHED_PROCESS_EXEC;
310 }
311
312 @Override
313 public String eventSchedProcessWakeup() {
314 return SCHED_WAKEUP;
315 }
316
317 @Override
318 public String eventSchedProcessWakeupNew() {
319 return SCHED_WAKEUP_NEW;
320 }
321
322 @Override
323 public String eventHRTimerStart() {
324 return HRTIMER_START;
325 }
326
327 @Override
328 public String eventHRTimerCancel() {
329 return HRTIMER_CANCEL;
330 }
331
332 @Override
333 public String eventHRTimerExpireEntry() {
334 return HRTIMER_EXPIRE_ENTRY;
335 }
336
337 @Override
338 public String eventHRTimerExpireExit() {
339 return HRTIMER_EXPIRE_EXIT;
340 }
341
342 /**
343 * Event indicating the source of the wakeup signal.
344 *
345 * @return The name of the event
346 * @since 2.0
347 */
348 public String eventSchedProcessTTWU() {
349 return SCHED_TTWU;
350 }
351
352 @Override
353 public String fieldHRtimer() {
354 return HRTIMER;
355 }
356 @Override
357 public String fieldHRtimerFunction() {
358 return HRTIMER_FUNCTION;
359 }
360
361 @Override
362 public String fieldHRtimerExpires() {
363 return HRTIMER_EXPIRES;
364 }
365
366 @Override
367 public String fieldHRtimerSoftexpires() {
368 return HRTIMER_SOFT_EXPIRES;
369 }
370 @Override
371 public String fieldHRtimerNow() {
372 return HRTIMER_NOW;
373 }
374
375 }
This page took 0.061923 seconds and 5 git commands to generate.