Import lttng.kernel.core plugins from Scope
[deliverable/tracecompass.git] / lttng / org.lttng.scope.lttng.kernel.core / src / org / lttng / scope / lttng / kernel / core / trace / layout / internal / 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.lttng.scope.lttng.kernel.core.trace.layout.internal;
14
15 import java.util.Collection;
16 import java.util.Collections;
17
18 import org.eclipse.jdt.annotation.NonNull;
19 import org.lttng.scope.lttng.kernel.core.trace.layout.ILttngKernelEventLayout;
20
21 import com.google.common.collect.ImmutableList;
22
23 /**
24 * This file defines all the known event and field names for LTTng kernel
25 * traces, for versions of lttng-modules up to 2.5.
26 *
27 * These should not be externalized, since they need to match exactly what the
28 * tracer outputs. If you want to localize them in a view, you should do a
29 * mapping in the view itself.
30 *
31 * @author Alexandre Montplaisir
32 */
33 @SuppressWarnings("nls")
34 public class LttngEventLayout implements ILttngKernelEventLayout {
35
36 /* Event names */
37 private static final String IRQ_HANDLER_ENTRY = "irq_handler_entry";
38 private static final String IRQ_HANDLER_EXIT = "irq_handler_exit";
39 private static final String SOFTIRQ_ENTRY = "softirq_entry";
40 private static final String SOFTIRQ_EXIT = "softirq_exit";
41 private static final String SOFTIRQ_RAISE = "softirq_raise";
42 private static final String HRTIMER_START = "hrtimer_start";
43 private static final String HRTIMER_CANCEL = "hrtimer_cancel";
44 private static final String HRTIMER_EXPIRE_ENTRY = "hrtimer_expire_entry";
45 private static final String HRTIMER_EXPIRE_EXIT = "hrtimer_expire_exit";
46 private static final String SCHED_SWITCH = "sched_switch";
47 private static final String SCHED_PI_SETPRIO = "sched_pi_setprio";
48
49 private static final String SCHED_TTWU = "sched_ttwu";
50 private static final String SCHED_WAKEUP = "sched_wakeup";
51 private static final String SCHED_WAKEUP_NEW = "sched_wakeup_new";
52 private static final Collection<String> SCHED_WAKEUP_EVENTS =
53 ImmutableList.of(SCHED_WAKEUP, SCHED_WAKEUP_NEW);
54
55 private static final String SCHED_PROCESS_FORK = "sched_process_fork";
56 private static final String SCHED_PROCESS_EXIT = "sched_process_exit";
57 private static final String SCHED_PROCESS_FREE = "sched_process_free";
58 private static final String SCHED_PROCESS_EXEC = "sched_process_exec";
59 private static final String STATEDUMP_PROCESS_STATE = "lttng_statedump_process_state";
60
61 private static final String SYSCALL_ENTRY_PREFIX = "sys_";
62 private static final String COMPAT_SYSCALL_ENTRY_PREFIX = "compat_sys_";
63 private static final String SYSCALL_EXIT_PREFIX = "exit_syscall";
64
65 private static final String BLOCK_RQ_INSERT= "block_rq_insert";
66 private static final String BLOCK_RQ_ISSUE= "block_rq_issue";
67 private static final String ELV_MERGE_REQUESTS= "addons_elv_merge_requests";
68 private static final String BLOCK_RQ_COMPLETE= "block_rq_complete";
69 private static final String LTTNG_STATEDUMP_BLOCK_DEVICE= "lttng_statedump_block_device";
70 private static final String BLOCK_BIO_FRONTMERGE = "block_bio_frontmerge";
71 private static final String BLOCK_BIO_BACKMERGE = "block_bio_backmerge";
72
73 /* Field names */
74 private static final String IRQ = "irq";
75 private static final String TID = "tid";
76 private static final String VEC = "vec";
77 private static final String PREV_TID = "prev_tid";
78 private static final String PREV_STATE = "prev_state";
79 private static final String NEXT_COMM = "next_comm";
80 private static final String NEXT_TID = "next_tid";
81 private static final String PARENT_TID = "parent_tid";
82 private static final String CHILD_COMM = "child_comm";
83 private static final String CHILD_TID = "child_tid";
84 private static final String PRIO = "prio";
85 private static final String PREV_PRIO = "prev_prio";
86 private static final String NEXT_PRIO = "next_prio";
87 private static final String NEW_PRIO = "newprio";
88 private static final String COMM = "comm";
89 private static final String NAME = "name";
90 private static final String STATUS = "status";
91 private static final String PREV_COMM = "prev_comm";
92 private static final String FILENAME = "filename";
93 private static final String HRTIMER = "hrtimer";
94 private static final String HRTIMER_FUNCTION = "function";
95 private static final String HRTIMER_EXPIRES = "expires";
96 private static final String HRTIMER_NOW = "now";
97 private static final String HRTIMER_SOFT_EXPIRES = "softexpires";
98 private static final String KMEM_ALLOC = "mm_page_alloc";
99 private static final String KMEM_FREE = "mm_page_free";
100 private static final String SYSCALL_RET = "ret";
101 private static final String RWBS="rwbs";
102 private static final String DISKNAME="diskname";
103 private static final String BLOCK_DEV="dev";
104 private static final String SECTOR="sector";
105 private static final String NR_SECTOR="nr_sector";
106 private static final String RQ_SECTOR= "rq_sector";
107 private static final String NEXTRQ_SECTOR= "nextrq_sector";
108 private static final String ORDER = "order";
109
110 /* Network events and field names */
111 private static final Collection<String> EVENTS_NETWORK_SEND = Collections.singleton("net_dev_queue");
112 private static final Collection<String> EVENTS_NETWORK_RECEIVE = Collections.singleton("netif_receive_skb");
113 private static final String[] TCP_SEQ_FIELD = { "transport_fields", "thtype_tcp", "seq" };
114 private static final String[] TCP_ACK_FIELD = { "transport_fields", "thtype_tcp", "ack_seq" };
115 private static final String[] TCP_FLAGS_FIELD = { "transport_fields", "thtype_tcp", "flags" };
116
117 /* KVM events */
118 private static final Collection<String> KVM_ENTRY_EVENTS = Collections.singleton("kvm_entry");
119 private static final Collection<String> KVM_EXIT_EVENTS = Collections.singleton("kvm_exit");
120
121 /** All instances are the same. Only provide a static instance getter */
122 protected LttngEventLayout() {
123 }
124
125 private static final ILttngKernelEventLayout INSTANCE = new LttngEventLayout();
126
127 /**
128 * Get an instance of this event layout
129 *
130 * This object is completely immutable, so no need to create additional
131 * instances via the constructor.
132 *
133 * @return The instance
134 */
135 public static ILttngKernelEventLayout getInstance() {
136 return INSTANCE;
137 }
138
139 // ------------------------------------------------------------------------
140 // Event names
141 // ------------------------------------------------------------------------
142
143 @Override
144 public String eventIrqHandlerEntry() {
145 return IRQ_HANDLER_ENTRY;
146 }
147
148 @Override
149 public String eventIrqHandlerExit() {
150 return IRQ_HANDLER_EXIT;
151 }
152
153 @Override
154 public String eventSoftIrqEntry() {
155 return SOFTIRQ_ENTRY;
156 }
157
158 @Override
159 public String eventSoftIrqExit() {
160 return SOFTIRQ_EXIT;
161 }
162
163 @Override
164 public String eventSoftIrqRaise() {
165 return SOFTIRQ_RAISE;
166 }
167
168 @Override
169 public String eventSchedSwitch() {
170 return SCHED_SWITCH;
171 }
172
173 @Override
174 public String eventSchedPiSetprio() {
175 return SCHED_PI_SETPRIO;
176 }
177
178 @Override
179 public Collection<String> eventsSchedWakeup() {
180 return SCHED_WAKEUP_EVENTS;
181 }
182
183 @Override
184 public String eventSchedProcessFork() {
185 return SCHED_PROCESS_FORK;
186 }
187
188 @Override
189 public String eventSchedProcessExit() {
190 return SCHED_PROCESS_EXIT;
191 }
192
193 @Override
194 public String eventSchedProcessFree() {
195 return SCHED_PROCESS_FREE;
196 }
197
198 @Override
199 public @NonNull String eventStatedumpProcessState() {
200 return STATEDUMP_PROCESS_STATE;
201 }
202
203 @Override
204 public String eventSyscallEntryPrefix() {
205 return SYSCALL_ENTRY_PREFIX;
206 }
207
208 @Override
209 public String eventCompatSyscallEntryPrefix() {
210 return COMPAT_SYSCALL_ENTRY_PREFIX;
211 }
212
213 @Override
214 public String eventSyscallExitPrefix() {
215 return SYSCALL_EXIT_PREFIX;
216 }
217
218 @Override
219 public String eventCompatSyscallExitPrefix() {
220 /*
221 * In LTTng < 2.6, the same generic event name is used for both standard
222 * and compat syscalls.
223 */
224 return SYSCALL_EXIT_PREFIX;
225 }
226
227 @Override
228 public String eventKmemPageAlloc() {
229 return KMEM_ALLOC;
230 }
231
232 @Override
233 public String eventKmemPageFree() {
234 return KMEM_FREE;
235 }
236
237 // ------------------------------------------------------------------------
238 // Event field names
239 // ------------------------------------------------------------------------
240
241 @Override
242 public String fieldIrq() {
243 return IRQ;
244 }
245
246 @Override
247 public String fieldVec() {
248 return VEC;
249 }
250
251 @Override
252 public String fieldTid() {
253 return TID;
254 }
255
256 @Override
257 public String fieldPrevTid() {
258 return PREV_TID;
259 }
260
261 @Override
262 public String fieldPrevState() {
263 return PREV_STATE;
264 }
265
266 @Override
267 public String fieldNextComm() {
268 return NEXT_COMM;
269 }
270
271 @Override
272 public String fieldNextTid() {
273 return NEXT_TID;
274 }
275
276 @Override
277 public String fieldChildComm() {
278 return CHILD_COMM;
279 }
280
281 @Override
282 public String fieldParentTid() {
283 return PARENT_TID;
284 }
285
286 @Override
287 public String fieldChildTid() {
288 return CHILD_TID;
289 }
290
291 @Override
292 public String fieldPrio() {
293 return PRIO;
294 }
295
296 @Override
297 public String fieldNewPrio() {
298 return NEW_PRIO;
299 }
300
301 @Override
302 public String fieldPrevPrio() {
303 return PREV_PRIO;
304 }
305
306 @Override
307 public String fieldNextPrio() {
308 return NEXT_PRIO;
309 }
310
311 @Override
312 public String fieldComm() {
313 return COMM;
314 }
315
316 @Override
317 public String fieldName() {
318 return NAME;
319 }
320
321 @Override
322 public String fieldStatus() {
323 return STATUS;
324 }
325
326 @Override
327 public String fieldPrevComm() {
328 return PREV_COMM;
329 }
330
331 @Override
332 public String fieldFilename() {
333 return FILENAME;
334 }
335
336 @Override
337 public String eventSchedProcessExec() {
338 return SCHED_PROCESS_EXEC;
339 }
340
341 @Override
342 public String eventSchedProcessWakeup() {
343 return SCHED_WAKEUP;
344 }
345
346 @Override
347 public String eventSchedProcessWakeupNew() {
348 return SCHED_WAKEUP_NEW;
349 }
350
351 @Override
352 public String eventSchedMigrateTask() {
353 return "sched_migrate_task"; //$NON-NLS-1$
354 }
355
356 @Override
357 public String eventHRTimerStart() {
358 return HRTIMER_START;
359 }
360
361 @Override
362 public String eventHRTimerCancel() {
363 return HRTIMER_CANCEL;
364 }
365
366 @Override
367 public String eventHRTimerExpireEntry() {
368 return HRTIMER_EXPIRE_ENTRY;
369 }
370
371 @Override
372 public String eventHRTimerExpireExit() {
373 return HRTIMER_EXPIRE_EXIT;
374 }
375
376 /**
377 * Event indicating the source of the wakeup signal.
378 *
379 * @return The name of the event
380 */
381 public String eventSchedProcessTTWU() {
382 return SCHED_TTWU;
383 }
384
385 @Override
386 public String fieldHRtimer() {
387 return HRTIMER;
388 }
389 @Override
390 public String fieldHRtimerFunction() {
391 return HRTIMER_FUNCTION;
392 }
393
394 @Override
395 public String fieldHRtimerExpires() {
396 return HRTIMER_EXPIRES;
397 }
398
399 @Override
400 public String fieldHRtimerSoftexpires() {
401 return HRTIMER_SOFT_EXPIRES;
402 }
403 @Override
404 public String fieldHRtimerNow() {
405 return HRTIMER_NOW;
406 }
407
408 @Override
409 public String fieldSyscallRet() {
410 return SYSCALL_RET;
411 }
412
413 // ------------------------------------------------------------------------
414 // I/O events and fields
415 // ------------------------------------------------------------------------
416
417 @Override
418 public String eventBlockRqInsert() {
419 return BLOCK_RQ_INSERT;
420 }
421
422 @Override
423 public String eventBlockRqIssue() {
424 return BLOCK_RQ_ISSUE;
425 }
426
427 @Override
428 public String eventBlockRqComplete() {
429 return BLOCK_RQ_COMPLETE;
430 }
431
432 @Override
433 public String eventBlockBioFrontmerge() {
434 return BLOCK_BIO_FRONTMERGE;
435 }
436
437 @Override
438 public String eventBlockBioBackmerge() {
439 return BLOCK_BIO_BACKMERGE;
440 }
441
442 @Override
443 public String eventBlockRqMerge() {
444 return ELV_MERGE_REQUESTS;
445 }
446
447 @Override
448 public @NonNull String eventStatedumpBlockDevice() {
449 return LTTNG_STATEDUMP_BLOCK_DEVICE;
450 }
451
452 @Override
453 public String fieldBlockDeviceId() {
454 return BLOCK_DEV;
455 }
456
457 @Override
458 public String fieldBlockSector() {
459 return SECTOR;
460 }
461
462 @Override
463 public String fieldBlockNrSector() {
464 return NR_SECTOR;
465 }
466
467 @Override
468 public String fieldBlockRwbs() {
469 return RWBS;
470 }
471
472 @Override
473 public String fieldBlockRqSector() {
474 return RQ_SECTOR;
475 }
476
477 @Override
478 public String fieldBlockNextRqSector() {
479 return NEXTRQ_SECTOR;
480 }
481
482 @Override
483 public String fieldDiskname() {
484 return DISKNAME;
485 }
486
487 @Override
488 public Collection<String> eventsNetworkSend() {
489 return EVENTS_NETWORK_SEND;
490 }
491
492 @Override
493 public Collection<String> eventsNetworkReceive() {
494 return EVENTS_NETWORK_RECEIVE;
495 }
496
497 @Override
498 public String @NonNull [] fieldPathTcpSeq() {
499 return TCP_SEQ_FIELD;
500 }
501
502 @Override
503 public String @NonNull [] fieldPathTcpAckSeq() {
504 return TCP_ACK_FIELD;
505 }
506
507 @Override
508 public String @NonNull [] fieldPathTcpFlags() {
509 return TCP_FLAGS_FIELD;
510 }
511
512 @Override
513 public @NonNull String fieldOrder() {
514 return ORDER;
515 }
516
517 // ------------------------------------------------------------------------
518 // VirtualMachine events : kvm entry/exit events
519 // ------------------------------------------------------------------------
520
521 @Override
522 public @NonNull Collection<@NonNull String> eventsKVMEntry() {
523 return KVM_ENTRY_EVENTS;
524 }
525
526 @Override
527 public @NonNull Collection<@NonNull String> eventsKVMExit() {
528 return KVM_EXIT_EVENTS;
529 }
530 }
This page took 0.043436 seconds and 5 git commands to generate.