analysis.io: Add I/O events and fields to the event layout
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.kernel.core / src / org / eclipse / tracecompass / internal / lttng2 / kernel / core / trace / layout / LttngEventLayout.java
CommitLineData
7411cd67 1/*******************************************************************************
ed902a2b 2 * Copyright (c) 2012, 2015 Ericsson
7411cd67
AM
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
13package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout;
14
15import java.util.Collection;
16
17import org.eclipse.jdt.annotation.NonNull;
e363eae1 18import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
7411cd67
AM
19
20import com.google.common.collect.ImmutableList;
21
22/**
acba092b
AM
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.
7411cd67
AM
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")
33public class LttngEventLayout implements IKernelAnalysisEventLayout {
34
35 /* Event names */
7411cd67
AM
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";
a8b8de05
BH
41 private static final String HRTIMER_START = "hrtimer_start";
42 private static final String HRTIMER_CANCEL = "hrtimer_cancel";
fb3a499b
FG
43 private static final String HRTIMER_EXPIRE_ENTRY = "hrtimer_expire_entry";
44 private static final String HRTIMER_EXPIRE_EXIT = "hrtimer_expire_exit";
7411cd67 45 private static final String SCHED_SWITCH = "sched_switch";
3bf563da 46 private static final String SCHED_PI_SETPRIO = "sched_pi_setprio";
7411cd67 47
fb3a499b
FG
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";
5db5a3a4 51 private static final Collection<String> SCHED_WAKEUP_EVENTS =
0e4f957e 52 ImmutableList.of(SCHED_WAKEUP, SCHED_WAKEUP_NEW);
7411cd67
AM
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";
fb3a499b 57 private static final String SCHED_PROCESS_EXEC = "sched_process_exec";
7411cd67
AM
58 private static final String STATEDUMP_PROCESS_STATE = "lttng_statedump_process_state";
59
acba092b
AM
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";
7411cd67 63
2bb1a7a1
GB
64 private static final String BLOCK_RQ_INSERT= "block_rq_insert";
65 private static final String BLOCK_RQ_ISSUE= "block_rq_issue";
66 private static final String ELV_MERGE_REQUESTS= "addons_elv_merge_requests";
67 private static final String BLOCK_RQ_COMPLETE= "block_rq_complete";
68 private static final String LTTNG_STATEDUMP_BLOCK_DEVICE= "lttng_statedump_block_device";
69 private static final String BLOCK_BIO_FRONTMERGE = "block_bio_frontmerge";
70 private static final String BLOCK_BIO_BACKMERGE = "block_bio_backmerge";
71
7411cd67
AM
72 /* Field names */
73 private static final String IRQ = "irq";
74 private static final String TID = "tid";
75 private static final String VEC = "vec";
76 private static final String PREV_TID = "prev_tid";
77 private static final String PREV_STATE = "prev_state";
78 private static final String NEXT_COMM = "next_comm";
79 private static final String NEXT_TID = "next_tid";
80 private static final String PARENT_TID = "parent_tid";
81 private static final String CHILD_COMM = "child_comm";
82 private static final String CHILD_TID = "child_tid";
3bf563da
CM
83 private static final String PRIO = "prio";
84 private static final String NEXT_PRIO = "next_prio";
85 private static final String NEW_PRIO = "newprio";
fb3a499b
FG
86 private static final String COMM = "comm";
87 private static final String NAME = "name";
88 private static final String STATUS = "status";
89 private static final String PREV_COMM = "prev_comm";
90 private static final String FILENAME = "filename";
a8b8de05
BH
91 private static final String HRTIMER = "hrtimer";
92 private static final String HRTIMER_FUNCTION = "function";
93 private static final String HRTIMER_EXPIRES = "expires";
94 private static final String HRTIMER_NOW = "now";
95 private static final String HRTIMER_SOFT_EXPIRES = "softexpires";
aa19e48b
NA
96 private static final String KMEM_ALLOC = "mm_page_alloc";
97 private static final String KMEM_FREE = "mm_page_free";
2bb1a7a1
GB
98 private static final String SYSCALL_RET = "ret";
99 private static final String RWBS="rwbs";
100 private static final String DISKNAME="diskname";
101 private static final String BLOCK_DEV="dev";
102 private static final String SECTOR="sector";
103 private static final String NR_SECTOR="nr_sector";
104 private static final String RQ_SECTOR= "rq_sector";
105 private static final String NEXTRQ_SECTOR= "nextrq_sector";
7411cd67
AM
106
107 /** All instances are the same. Only provide a static instance getter */
acba092b 108 protected LttngEventLayout() {
7411cd67
AM
109 }
110
111 private static final IKernelAnalysisEventLayout INSTANCE = new LttngEventLayout();
112
113 /**
114 * Get an instance of this event layout
115 *
116 * This object is completely immutable, so no need to create additional
117 * instances via the constructor.
118 *
119 * @return The instance
120 */
121 public static IKernelAnalysisEventLayout getInstance() {
122 return INSTANCE;
123 }
124
125 // ------------------------------------------------------------------------
126 // Event names
127 // ------------------------------------------------------------------------
128
129 @Override
130 public String eventIrqHandlerEntry() {
131 return IRQ_HANDLER_ENTRY;
132 }
133
134 @Override
135 public String eventIrqHandlerExit() {
136 return IRQ_HANDLER_EXIT;
137 }
138
139 @Override
140 public String eventSoftIrqEntry() {
141 return SOFTIRQ_ENTRY;
142 }
143
144 @Override
145 public String eventSoftIrqExit() {
146 return SOFTIRQ_EXIT;
147 }
148
149 @Override
150 public String eventSoftIrqRaise() {
151 return SOFTIRQ_RAISE;
152 }
153
154 @Override
155 public String eventSchedSwitch() {
156 return SCHED_SWITCH;
157 }
158
3bf563da
CM
159 @Override
160 public String eventSchedPiSetprio() {
161 return SCHED_PI_SETPRIO;
162 }
163
7411cd67
AM
164 @Override
165 public Collection<String> eventsSchedWakeup() {
166 return SCHED_WAKEUP_EVENTS;
167 }
168
169 @Override
170 public String eventSchedProcessFork() {
171 return SCHED_PROCESS_FORK;
172 }
173
174 @Override
175 public String eventSchedProcessExit() {
176 return SCHED_PROCESS_EXIT;
177 }
178
179 @Override
180 public String eventSchedProcessFree() {
181 return SCHED_PROCESS_FREE;
182 }
183
184 @Override
bd0e2f70 185 public @NonNull String eventStatedumpProcessState() {
7411cd67
AM
186 return STATEDUMP_PROCESS_STATE;
187 }
7411cd67
AM
188
189 @Override
190 public String eventSyscallEntryPrefix() {
acba092b 191 return SYSCALL_ENTRY_PREFIX;
7411cd67
AM
192 }
193
194 @Override
195 public String eventCompatSyscallEntryPrefix() {
acba092b
AM
196 return COMPAT_SYSCALL_ENTRY_PREFIX;
197 }
198
199 @Override
200 public String eventSyscallExitPrefix() {
201 return SYSCALL_EXIT_PREFIX;
7411cd67
AM
202 }
203
01f2a507
AM
204 @Override
205 public String eventCompatSyscallExitPrefix() {
206 /*
207 * In LTTng < 2.6, the same generic event name is used for both standard
208 * and compat syscalls.
209 */
210 return SYSCALL_EXIT_PREFIX;
211 }
212
aa19e48b
NA
213 /**
214 * @since 2.0
215 */
216 @Override
217 public String eventKmemPageAlloc() {
218 return KMEM_ALLOC;
219 }
220
221 /**
222 * @since 2.0
223 */
224 @Override
225 public String eventKmemPageFree() {
226 return KMEM_FREE;
227 }
228
7411cd67
AM
229 // ------------------------------------------------------------------------
230 // Event field names
231 // ------------------------------------------------------------------------
232
233 @Override
234 public String fieldIrq() {
235 return IRQ;
236 }
237
238 @Override
239 public String fieldVec() {
240 return VEC;
241 }
242
243 @Override
244 public String fieldTid() {
245 return TID;
246 }
247
248 @Override
249 public String fieldPrevTid() {
250 return PREV_TID;
251 }
252
253 @Override
254 public String fieldPrevState() {
255 return PREV_STATE;
256 }
257
258 @Override
259 public String fieldNextComm() {
260 return NEXT_COMM;
261 }
262
263 @Override
264 public String fieldNextTid() {
265 return NEXT_TID;
266 }
267
268 @Override
269 public String fieldChildComm() {
270 return CHILD_COMM;
271 }
272
273 @Override
274 public String fieldParentTid() {
275 return PARENT_TID;
276 }
277
278 @Override
279 public String fieldChildTid() {
280 return CHILD_TID;
281 }
282
3bf563da
CM
283 @Override
284 public String fieldPrio() {
285 return PRIO;
286 }
287
288 @Override
289 public String fieldNewPrio() {
290 return NEW_PRIO;
291 }
292
293 @Override
294 public String fieldNextPrio() {
295 return NEXT_PRIO;
296 }
297
fb3a499b
FG
298 @Override
299 public String fieldComm() {
300 return COMM;
301 }
302
303 @Override
304 public String fieldName() {
305 return NAME;
306 }
307
308 @Override
309 public String fieldStatus() {
310 return STATUS;
311 }
312
313 @Override
314 public String fieldPrevComm() {
315 return PREV_COMM;
316 }
317
318 @Override
319 public String fieldFilename() {
320 return FILENAME;
321 }
322
323 @Override
324 public String eventSchedProcessExec() {
325 return SCHED_PROCESS_EXEC;
326 }
327
328 @Override
329 public String eventSchedProcessWakeup() {
330 return SCHED_WAKEUP;
331 }
332
333 @Override
334 public String eventSchedProcessWakeupNew() {
335 return SCHED_WAKEUP_NEW;
336 }
337
a8b8de05
BH
338 @Override
339 public String eventHRTimerStart() {
340 return HRTIMER_START;
341 }
342
343 @Override
344 public String eventHRTimerCancel() {
345 return HRTIMER_CANCEL;
346 }
347
fb3a499b
FG
348 @Override
349 public String eventHRTimerExpireEntry() {
350 return HRTIMER_EXPIRE_ENTRY;
351 }
352
353 @Override
354 public String eventHRTimerExpireExit() {
355 return HRTIMER_EXPIRE_EXIT;
356 }
357
358 /**
359 * Event indicating the source of the wakeup signal.
360 *
361 * @return The name of the event
362 * @since 2.0
363 */
364 public String eventSchedProcessTTWU() {
365 return SCHED_TTWU;
366 }
a8b8de05
BH
367
368 @Override
369 public String fieldHRtimer() {
370 return HRTIMER;
371 }
372 @Override
373 public String fieldHRtimerFunction() {
374 return HRTIMER_FUNCTION;
375 }
376
377 @Override
378 public String fieldHRtimerExpires() {
379 return HRTIMER_EXPIRES;
380 }
381
382 @Override
383 public String fieldHRtimerSoftexpires() {
384 return HRTIMER_SOFT_EXPIRES;
385 }
386 @Override
387 public String fieldHRtimerNow() {
388 return HRTIMER_NOW;
389 }
390
2bb1a7a1
GB
391 @Override
392 public String fieldSyscallRet() {
393 return SYSCALL_RET;
394 }
395
396 // ------------------------------------------------------------------------
397 // I/O events and fields
398 // ------------------------------------------------------------------------
399
400 @Override
401 public String eventBlockRqInsert() {
402 return BLOCK_RQ_INSERT;
403 }
404
405 @Override
406 public String eventBlockRqIssue() {
407 return BLOCK_RQ_ISSUE;
408 }
409
410 @Override
411 public String eventBlockRqComplete() {
412 return BLOCK_RQ_COMPLETE;
413 }
414
415 @Override
416 public String eventBlockBioFrontmerge() {
417 return BLOCK_BIO_FRONTMERGE;
418 }
419
420 @Override
421 public String eventBlockBioBackmerge() {
422 return BLOCK_BIO_BACKMERGE;
423 }
424
425 @Override
426 public String eventBlockRqMerge() {
427 return ELV_MERGE_REQUESTS;
428 }
429
430 @Override
431 public @NonNull String eventStatedumpBlockDevice() {
432 return LTTNG_STATEDUMP_BLOCK_DEVICE;
433 }
434
435 @Override
436 public String fieldBlockDeviceId() {
437 return BLOCK_DEV;
438 }
439
440 @Override
441 public String fieldBlockSector() {
442 return SECTOR;
443 }
444
445 @Override
446 public String fieldBlockNrSector() {
447 return NR_SECTOR;
448 }
449
450 @Override
451 public String fieldBlockRwbs() {
452 return RWBS;
453 }
454
455 @Override
456 public String fieldBlockRqSector() {
457 return RQ_SECTOR;
458 }
459
460 @Override
461 public String fieldBlockNextRqSector() {
462 return NEXTRQ_SECTOR;
463 }
464
465 @Override
466 public String fieldDiskname() {
467 return DISKNAME;
468 }
469
7411cd67 470}
This page took 0.099513 seconds and 5 git commands to generate.