1 /*******************************************************************************
2 * Copyright (c) 2012, 2015 Ericsson
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
10 * Alexandre Montplaisir - Initial API and implementation
11 ******************************************************************************/
13 package org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.trace
.layout
;
15 import java
.util
.Collection
;
17 import org
.eclipse
.jdt
.annotation
.Nullable
;
18 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.trace
.IKernelAnalysisEventLayout
;
20 import com
.google
.common
.collect
.ImmutableList
;
23 * Event and field definitions for perf traces in CTF format.
25 * @author Alexandre Montplaisir
27 public class PerfEventLayout
implements IKernelAnalysisEventLayout
{
29 private PerfEventLayout() {}
31 private static final PerfEventLayout INSTANCE
= new PerfEventLayout();
34 * Get the singleton instance of this event layout object.
36 * @return The instance
38 public static PerfEventLayout
getInstance() {
42 // ------------------------------------------------------------------------
44 // ------------------------------------------------------------------------
47 public String
eventIrqHandlerEntry() {
48 return "irq:irq_handler_exit"; //$NON-NLS-1$
52 public String
eventIrqHandlerExit() {
53 return "irq:irq_handler_entry"; //$NON-NLS-1$
57 public String
eventSoftIrqEntry() {
58 return "irq:softirq_entry"; //$NON-NLS-1$
62 public String
eventSoftIrqExit() {
63 return "irq:softirq_exit"; //$NON-NLS-1$
67 public String
eventSoftIrqRaise() {
68 return "irq:softirq_raise"; //$NON-NLS-1$
72 public String
eventSchedSwitch() {
73 return "sched:sched_switch"; //$NON-NLS-1$
77 public String
eventSchedPiSetprio() {
78 return "sched:sched_pi_setprio"; //$NON-NLS-1$
81 private static final Collection
<String
> WAKEUP_EVENTS
=
82 ImmutableList
.of("sched:sched_wakeup", "sched:sched_wakeup_new"); //$NON-NLS-1$ //$NON-NLS-2$
85 public Collection
<String
> eventsSchedWakeup() {
90 public String
eventSchedProcessFork() {
91 return "sched:sched_process_fork"; //$NON-NLS-1$
95 public String
eventSchedProcessExit() {
96 return "sched:sched_process_exit"; //$NON-NLS-1$
100 public String
eventSchedProcessFree() {
101 return "sched:sched_process_free"; //$NON-NLS-1$
105 public @Nullable String
eventStatedumpProcessState() {
106 /* Not present in perf traces */
111 public String
eventSyscallEntryPrefix() {
112 return "raw_syscalls:sys_enter"; //$NON-NLS-1$
116 public String
eventCompatSyscallEntryPrefix() {
117 return eventSyscallEntryPrefix();
121 public String
eventSyscallExitPrefix() {
122 return "raw_syscalls:sys_exit"; //$NON-NLS-1$
126 public String
eventCompatSyscallExitPrefix() {
127 return eventSyscallExitPrefix();
131 public String
eventSchedProcessExec() {
132 return "sched:sched_process_exec"; //$NON-NLS-1$
136 public String
eventSchedProcessWakeup() {
137 return "sched:sched_process_wakeup"; //$NON-NLS-1$
141 public String
eventSchedProcessWakeupNew() {
142 return "sched:process_wakeup_new"; //$NON-NLS-1$
146 public String
eventHRTimerStart() {
147 return "timer:hrtimer_start"; //$NON-NLS-1$
151 public String
eventHRTimerCancel() {
152 return "timer:hrtimer_cancel"; //$NON-NLS-1$
156 public String
eventHRTimerExpireEntry() {
157 return "timer:hrtimer_expire_entry"; //$NON-NLS-1$
161 public String
eventHRTimerExpireExit() {
162 return "timer:hrtimer_expire_exit"; //$NON-NLS-1$
166 public String
eventKmemPageAlloc() {
167 return "kmem:page_alloc"; //$NON-NLS-1$
171 public String
eventKmemPageFree() {
172 return "kmem:page_free"; //$NON-NLS-1$
175 // ------------------------------------------------------------------------
177 // ------------------------------------------------------------------------
180 public String
fieldIrq() {
181 return "irq"; //$NON-NLS-1$
185 public String
fieldVec() {
186 return "vec"; //$NON-NLS-1$
190 public String
fieldTid() {
191 return "pid"; //$NON-NLS-1$
195 public String
fieldPrevTid() {
196 return "prev_pid"; //$NON-NLS-1$
200 public String
fieldPrevState() {
201 return "prev_state"; //$NON-NLS-1$
205 public String
fieldNextComm() {
206 return "next_comm"; //$NON-NLS-1$
210 public String
fieldNextTid() {
211 return "next_pid"; //$NON-NLS-1$
215 public String
fieldChildComm() {
216 return "child_comm"; //$NON-NLS-1$
220 public String
fieldParentTid() {
221 return "parent_pid"; //$NON-NLS-1$
225 public String
fieldChildTid() {
226 return "child_pid"; //$NON-NLS-1$
230 public String
fieldPrio() {
231 return "prio"; //$NON-NLS-1$
235 public String
fieldNewPrio() {
236 return "newprio"; //$NON-NLS-1$
240 public String
fieldNextPrio() {
241 return "next_prio"; //$NON-NLS-1$
245 public String
fieldComm() {
246 return "comm"; //$NON-NLS-1$
250 public String
fieldName() {
251 return "name"; //$NON-NLS-1$
255 public String
fieldStatus() {
256 return "status"; //$NON-NLS-1$
260 public String
fieldPrevComm() {
261 return "prev_comm"; //$NON-NLS-1$
265 public String
fieldFilename() {
266 return "filename"; //$NON-NLS-1$
270 public String
fieldHRtimer() {
271 return "hrtimer"; //$NON-NLS-1$
275 public String
fieldHRtimerFunction() {
276 return "function"; //$NON-NLS-1$
280 public String
fieldHRtimerExpires() {
281 return "expires"; //$NON-NLS-1$
285 public String
fieldHRtimerSoftexpires() {
286 return "softexpires"; //$NON-NLS-1$
290 public String
fieldHRtimerNow() {
291 return "now"; //$NON-NLS-1$
294 // ------------------------------------------------------------------------
295 // I/O events and fields
296 // ------------------------------------------------------------------------
299 public String
eventBlockRqInsert() {
300 return "block:block_rq_insert"; //$NON-NLS-1$
304 public String
eventBlockRqIssue() {
305 return "block:block_rq_issue"; //$NON-NLS-1$
309 public String
eventBlockRqComplete() {
310 return "block:block_rq_complete"; //$NON-NLS-1$
314 public String
eventBlockBioFrontmerge() {
315 return "block:block_bio_frontmerge"; //$NON-NLS-1$
319 public String
eventBlockBioBackmerge() {
320 return "block:block_bio_backmerge"; //$NON-NLS-1$