blob: 13ce8d6180105a8933f326f5bbb1f4f17cc11d23 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2015 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Alexandre Montplaisir - Initial API and implementation
******************************************************************************/
package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout;
import java.util.Collection;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
import com.google.common.collect.ImmutableList;
/**
* Event and field definitions for perf traces in CTF format.
*
* @author Alexandre Montplaisir
*/
public final class PerfEventLayout implements IKernelAnalysisEventLayout {
private PerfEventLayout() {
}
private static final PerfEventLayout INSTANCE = new PerfEventLayout();
/**
* Get the singleton instance of this event layout object.
*
* @return The instance
*/
public static PerfEventLayout getInstance() {
return INSTANCE;
}
// ------------------------------------------------------------------------
// Event names
// ------------------------------------------------------------------------
@Override
public String eventIrqHandlerEntry() {
return "irq:irq_handler_entry"; //$NON-NLS-1$
}
@Override
public String eventIrqHandlerExit() {
return "irq:irq_handler_exit"; //$NON-NLS-1$
}
@Override
public String eventSoftIrqEntry() {
return "irq:softirq_entry"; //$NON-NLS-1$
}
@Override
public String eventSoftIrqExit() {
return "irq:softirq_exit"; //$NON-NLS-1$
}
@Override
public String eventSoftIrqRaise() {
return "irq:softirq_raise"; //$NON-NLS-1$
}
@Override
public String eventSchedSwitch() {
return "sched:sched_switch"; //$NON-NLS-1$
}
@Override
public String eventSchedPiSetprio() {
return "sched:sched_pi_setprio"; //$NON-NLS-1$
}
private static final Collection<String> WAKEUP_EVENTS = ImmutableList.of("sched:sched_wakeup", "sched:sched_wakeup_new"); //$NON-NLS-1$ //$NON-NLS-2$
@Override
public Collection<String> eventsSchedWakeup() {
return WAKEUP_EVENTS;
}
@Override
public String eventSchedProcessFork() {
return "sched:sched_process_fork"; //$NON-NLS-1$
}
@Override
public String eventSchedProcessExit() {
return "sched:sched_process_exit"; //$NON-NLS-1$
}
@Override
public String eventSchedProcessFree() {
return "sched:sched_process_free"; //$NON-NLS-1$
}
@Override
public @Nullable String eventStatedumpProcessState() {
/* Not present in perf traces */
return null;
}
@Override
public String eventSyscallEntryPrefix() {
return "raw_syscalls:sys_enter"; //$NON-NLS-1$
}
@Override
public String eventCompatSyscallEntryPrefix() {
return eventSyscallEntryPrefix();
}
@Override
public String eventSyscallExitPrefix() {
return "raw_syscalls:sys_exit"; //$NON-NLS-1$
}
@Override
public String eventCompatSyscallExitPrefix() {
return eventSyscallExitPrefix();
}
@Override
public String eventSchedProcessExec() {
return "sched:sched_process_exec"; //$NON-NLS-1$
}
@Override
public String eventSchedProcessWakeup() {
return "sched:sched_process_wakeup"; //$NON-NLS-1$
}
@Override
public String eventSchedProcessWakeupNew() {
return "sched:process_wakeup_new"; //$NON-NLS-1$
}
@Override
public String eventSchedProcessWaking() {
return "sched:sched_waking"; //$NON-NLS-1$
}
@Override
public String eventHRTimerStart() {
return "timer:hrtimer_start"; //$NON-NLS-1$
}
@Override
public String eventHRTimerCancel() {
return "timer:hrtimer_cancel"; //$NON-NLS-1$
}
@Override
public String eventHRTimerExpireEntry() {
return "timer:hrtimer_expire_entry"; //$NON-NLS-1$
}
@Override
public String eventHRTimerExpireExit() {
return "timer:hrtimer_expire_exit"; //$NON-NLS-1$
}
@Override
public String eventKmemPageAlloc() {
return "kmem:page_alloc"; //$NON-NLS-1$
}
@Override
public String eventKmemPageFree() {
return "kmem:page_free"; //$NON-NLS-1$
}
// ------------------------------------------------------------------------
// Field names
// ------------------------------------------------------------------------
@Override
public String fieldIrq() {
return "irq"; //$NON-NLS-1$
}
@Override
public String fieldVec() {
return "vec"; //$NON-NLS-1$
}
@Override
public String fieldTid() {
return "pid"; //$NON-NLS-1$
}
@Override
public String fieldPrevTid() {
return "prev_pid"; //$NON-NLS-1$
}
@Override
public String fieldPrevState() {
return "prev_state"; //$NON-NLS-1$
}
@Override
public String fieldNextComm() {
return "next_comm"; //$NON-NLS-1$
}
@Override
public String fieldNextTid() {
return "next_pid"; //$NON-NLS-1$
}
@Override
public String fieldChildComm() {
return "child_comm"; //$NON-NLS-1$
}
@Override
public String fieldParentTid() {
return "parent_pid"; //$NON-NLS-1$
}
@Override
public String fieldChildTid() {
return "child_pid"; //$NON-NLS-1$
}
@Override
public String fieldChildPid() {
return "child_pid"; //$NON-NLS-1$
}
@Override
public String fieldPrio() {
return "prio"; //$NON-NLS-1$
}
@Override
public String fieldNewPrio() {
return "newprio"; //$NON-NLS-1$
}
@Override
public String fieldPrevPrio() {
return "prev_prio"; //$NON-NLS-1$
}
@Override
public String fieldNextPrio() {
return "next_prio"; //$NON-NLS-1$
}
@Override
public String fieldComm() {
return "comm"; //$NON-NLS-1$
}
@Override
public String fieldName() {
return "name"; //$NON-NLS-1$
}
@Override
public String fieldStatus() {
return "status"; //$NON-NLS-1$
}
@Override
public String fieldPrevComm() {
return "prev_comm"; //$NON-NLS-1$
}
@Override
public String fieldFilename() {
return "filename"; //$NON-NLS-1$
}
@Override
public String fieldHRtimer() {
return "hrtimer"; //$NON-NLS-1$
}
@Override
public String fieldHRtimerFunction() {
return "function"; //$NON-NLS-1$
}
@Override
public String fieldHRtimerExpires() {
return "expires"; //$NON-NLS-1$
}
@Override
public String fieldHRtimerSoftexpires() {
return "softexpires"; //$NON-NLS-1$
}
@Override
public String fieldHRtimerNow() {
return "now"; //$NON-NLS-1$
}
@Override
public @NonNull String fieldOrder() {
return "order"; //$NON-NLS-1$
}
// ------------------------------------------------------------------------
// I/O events and fields
// ------------------------------------------------------------------------
@Override
public String eventBlockRqInsert() {
return "block:block_rq_insert"; //$NON-NLS-1$
}
@Override
public String eventBlockRqIssue() {
return "block:block_rq_issue"; //$NON-NLS-1$
}
@Override
public String eventBlockRqComplete() {
return "block:block_rq_complete"; //$NON-NLS-1$
}
@Override
public String eventBlockBioFrontmerge() {
return "block:block_bio_frontmerge"; //$NON-NLS-1$
}
@Override
public String eventBlockBioBackmerge() {
return "block:block_bio_backmerge"; //$NON-NLS-1$
}
}