linux/lttng: Fix return type and names of layout's network events
[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 import java.util.Collections;
17
18 import org.eclipse.jdt.annotation.NonNull;
19 import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
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 IKernelAnalysisEventLayout {
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
109 /* Network events and field names */
110 private static final Collection<String> EVENTS_NETWORK_SEND = Collections.singleton("net_dev_queue");
111 private static final Collection<String> EVENTS_NETWORK_RECEIVE = Collections.singleton("netif_receive_skb");
112 private static final String[] TCP_SEQ_FIELD = { "transport_fields", "thtype_tcp", "seq" };
113 private static final String[] TCP_ACK_FIELD = { "transport_fields", "thtype_tcp", "ack_seq" };
114 private static final String[] TCP_FLAGS_FIELD = { "transport_fields", "thtype_tcp", "flags" };
115
116 /* KVM events */
117 private static final Collection<String> KVM_ENTRY_EVENTS = Collections.singleton("kvm_entry");
118 private static final Collection<String> KVM_EXIT_EVENTS = Collections.singleton("kvm_exit");
119
120 /** All instances are the same. Only provide a static instance getter */
121 protected LttngEventLayout() {
122 }
123
124 private static final IKernelAnalysisEventLayout INSTANCE = new LttngEventLayout();
125
126 /**
127 * Get an instance of this event layout
128 *
129 * This object is completely immutable, so no need to create additional
130 * instances via the constructor.
131 *
132 * @return The instance
133 */
134 public static IKernelAnalysisEventLayout getInstance() {
135 return INSTANCE;
136 }
137
138 // ------------------------------------------------------------------------
139 // Event names
140 // ------------------------------------------------------------------------
141
142 @Override
143 public String eventIrqHandlerEntry() {
144 return IRQ_HANDLER_ENTRY;
145 }
146
147 @Override
148 public String eventIrqHandlerExit() {
149 return IRQ_HANDLER_EXIT;
150 }
151
152 @Override
153 public String eventSoftIrqEntry() {
154 return SOFTIRQ_ENTRY;
155 }
156
157 @Override
158 public String eventSoftIrqExit() {
159 return SOFTIRQ_EXIT;
160 }
161
162 @Override
163 public String eventSoftIrqRaise() {
164 return SOFTIRQ_RAISE;
165 }
166
167 @Override
168 public String eventSchedSwitch() {
169 return SCHED_SWITCH;
170 }
171
172 @Override
173 public String eventSchedPiSetprio() {
174 return SCHED_PI_SETPRIO;
175 }
176
177 @Override
178 public Collection<String> eventsSchedWakeup() {
179 return SCHED_WAKEUP_EVENTS;
180 }
181
182 @Override
183 public String eventSchedProcessFork() {
184 return SCHED_PROCESS_FORK;
185 }
186
187 @Override
188 public String eventSchedProcessExit() {
189 return SCHED_PROCESS_EXIT;
190 }
191
192 @Override
193 public String eventSchedProcessFree() {
194 return SCHED_PROCESS_FREE;
195 }
196
197 @Override
198 public @NonNull String eventStatedumpProcessState() {
199 return STATEDUMP_PROCESS_STATE;
200 }
201
202 @Override
203 public String eventSyscallEntryPrefix() {
204 return SYSCALL_ENTRY_PREFIX;
205 }
206
207 @Override
208 public String eventCompatSyscallEntryPrefix() {
209 return COMPAT_SYSCALL_ENTRY_PREFIX;
210 }
211
212 @Override
213 public String eventSyscallExitPrefix() {
214 return SYSCALL_EXIT_PREFIX;
215 }
216
217 @Override
218 public String eventCompatSyscallExitPrefix() {
219 /*
220 * In LTTng < 2.6, the same generic event name is used for both standard
221 * and compat syscalls.
222 */
223 return SYSCALL_EXIT_PREFIX;
224 }
225
226 /**
227 * @since 2.0
228 */
229 @Override
230 public String eventKmemPageAlloc() {
231 return KMEM_ALLOC;
232 }
233
234 /**
235 * @since 2.0
236 */
237 @Override
238 public String eventKmemPageFree() {
239 return KMEM_FREE;
240 }
241
242 // ------------------------------------------------------------------------
243 // Event field names
244 // ------------------------------------------------------------------------
245
246 @Override
247 public String fieldIrq() {
248 return IRQ;
249 }
250
251 @Override
252 public String fieldVec() {
253 return VEC;
254 }
255
256 @Override
257 public String fieldTid() {
258 return TID;
259 }
260
261 @Override
262 public String fieldPrevTid() {
263 return PREV_TID;
264 }
265
266 @Override
267 public String fieldPrevState() {
268 return PREV_STATE;
269 }
270
271 @Override
272 public String fieldNextComm() {
273 return NEXT_COMM;
274 }
275
276 @Override
277 public String fieldNextTid() {
278 return NEXT_TID;
279 }
280
281 @Override
282 public String fieldChildComm() {
283 return CHILD_COMM;
284 }
285
286 @Override
287 public String fieldParentTid() {
288 return PARENT_TID;
289 }
290
291 @Override
292 public String fieldChildTid() {
293 return CHILD_TID;
294 }
295
296 @Override
297 public String fieldPrio() {
298 return PRIO;
299 }
300
301 @Override
302 public String fieldNewPrio() {
303 return NEW_PRIO;
304 }
305
306 @Override
307 public String fieldPrevPrio() {
308 return PREV_PRIO;
309 }
310
311 @Override
312 public String fieldNextPrio() {
313 return NEXT_PRIO;
314 }
315
316 @Override
317 public String fieldComm() {
318 return COMM;
319 }
320
321 @Override
322 public String fieldName() {
323 return NAME;
324 }
325
326 @Override
327 public String fieldStatus() {
328 return STATUS;
329 }
330
331 @Override
332 public String fieldPrevComm() {
333 return PREV_COMM;
334 }
335
336 @Override
337 public String fieldFilename() {
338 return FILENAME;
339 }
340
341 @Override
342 public String eventSchedProcessExec() {
343 return SCHED_PROCESS_EXEC;
344 }
345
346 @Override
347 public String eventSchedProcessWakeup() {
348 return SCHED_WAKEUP;
349 }
350
351 @Override
352 public String eventSchedProcessWakeupNew() {
353 return SCHED_WAKEUP_NEW;
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 * @since 2.0
381 */
382 public String eventSchedProcessTTWU() {
383 return SCHED_TTWU;
384 }
385
386 @Override
387 public String fieldHRtimer() {
388 return HRTIMER;
389 }
390 @Override
391 public String fieldHRtimerFunction() {
392 return HRTIMER_FUNCTION;
393 }
394
395 @Override
396 public String fieldHRtimerExpires() {
397 return HRTIMER_EXPIRES;
398 }
399
400 @Override
401 public String fieldHRtimerSoftexpires() {
402 return HRTIMER_SOFT_EXPIRES;
403 }
404 @Override
405 public String fieldHRtimerNow() {
406 return HRTIMER_NOW;
407 }
408
409 @Override
410 public String fieldSyscallRet() {
411 return SYSCALL_RET;
412 }
413
414 // ------------------------------------------------------------------------
415 // I/O events and fields
416 // ------------------------------------------------------------------------
417
418 @Override
419 public String eventBlockRqInsert() {
420 return BLOCK_RQ_INSERT;
421 }
422
423 @Override
424 public String eventBlockRqIssue() {
425 return BLOCK_RQ_ISSUE;
426 }
427
428 @Override
429 public String eventBlockRqComplete() {
430 return BLOCK_RQ_COMPLETE;
431 }
432
433 @Override
434 public String eventBlockBioFrontmerge() {
435 return BLOCK_BIO_FRONTMERGE;
436 }
437
438 @Override
439 public String eventBlockBioBackmerge() {
440 return BLOCK_BIO_BACKMERGE;
441 }
442
443 @Override
444 public String eventBlockRqMerge() {
445 return ELV_MERGE_REQUESTS;
446 }
447
448 @Override
449 public @NonNull String eventStatedumpBlockDevice() {
450 return LTTNG_STATEDUMP_BLOCK_DEVICE;
451 }
452
453 @Override
454 public String fieldBlockDeviceId() {
455 return BLOCK_DEV;
456 }
457
458 @Override
459 public String fieldBlockSector() {
460 return SECTOR;
461 }
462
463 @Override
464 public String fieldBlockNrSector() {
465 return NR_SECTOR;
466 }
467
468 @Override
469 public String fieldBlockRwbs() {
470 return RWBS;
471 }
472
473 @Override
474 public String fieldBlockRqSector() {
475 return RQ_SECTOR;
476 }
477
478 @Override
479 public String fieldBlockNextRqSector() {
480 return NEXTRQ_SECTOR;
481 }
482
483 @Override
484 public String fieldDiskname() {
485 return DISKNAME;
486 }
487
488 @Override
489 public Collection<String> eventsNetworkSend() {
490 return EVENTS_NETWORK_SEND;
491 }
492
493 @Override
494 public Collection<String> eventsNetworkReceive() {
495 return EVENTS_NETWORK_RECEIVE;
496 }
497
498 @Override
499 public String @NonNull [] fieldPathTcpSeq() {
500 return TCP_SEQ_FIELD;
501 }
502
503 @Override
504 public String @NonNull [] fieldPathTcpAckSeq() {
505 return TCP_ACK_FIELD;
506 }
507
508 @Override
509 public String @NonNull [] fieldPathTcpFlags() {
510 return TCP_FLAGS_FIELD;
511 }
512
513 // ------------------------------------------------------------------------
514 // VirtualMachine events : kvm entry/exit events
515 // ------------------------------------------------------------------------
516
517 @Override
518 public @NonNull Collection<@NonNull String> eventsKVMEntry() {
519 return KVM_ENTRY_EVENTS;
520 }
521
522 @Override
523 public @NonNull Collection<@NonNull String> eventsKVMExit() {
524 return KVM_EXIT_EVENTS;
525 }
526 }
This page took 0.047569 seconds and 5 git commands to generate.