From: Francis Giraldeau Date: Thu, 29 Oct 2015 14:13:39 +0000 (-0400) Subject: lttng: additional definitions for lttng 2.7 and 2.8 X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=e8e9291622adbf1ed9f49e473cb1cd8a020da2a9;p=deliverable%2Ftracecompass.git lttng: additional definitions for lttng 2.7 and 2.8 * New event sched_waking (for upcomming lttng 2.8 and linux > 4.3) * Modified event names in lttng 2.7 for softirqs (softirq_entry renamed to irq_softirq_entry) Change-Id: I0c5acd0e201e41ad7f2cf6749cc2105d41523f3f Signed-off-by: Francis Giraldeau Reviewed-on: https://git.eclipse.org/r/59230 Reviewed-by: Hudson CI Reviewed-by: Alexandre Montplaisir --- diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java index dc500a9c11..7a59d87e07 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java @@ -46,6 +46,7 @@ public class DefaultEventLayout implements IKernelAnalysisEventLayout{ private static final String SCHED_PI_SETPRIO = "sched_pi_setprio"; //$NON-NLS-1$ private static final String SCHED_TTWU = "sched_ttwu"; //$NON-NLS-1$ + private static final String SCHED_WAKING = "sched_waking"; //$NON-NLS-1$ private static final String SCHED_WAKEUP = "sched_wakeup"; //$NON-NLS-1$ private static final String SCHED_WAKEUP_NEW = "sched_wakeup_new"; //$NON-NLS-1$ private static final Collection SCHED_WAKEUP_EVENTS = @@ -364,4 +365,14 @@ public class DefaultEventLayout implements IKernelAnalysisEventLayout{ return NOW; } + /** + * Event indicating the source of the wakeup signal. + * + * @return The name of the event + * @since 2.0 + */ + public String eventSchedProcessWaking() { + return SCHED_WAKING; + } + } diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng27EventLayout.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng27EventLayout.java index 9004f33c06..dbd151d1fe 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng27EventLayout.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng27EventLayout.java @@ -12,6 +12,10 @@ package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout; +import java.util.Collection; + +import com.google.common.collect.ImmutableSet; + /** * This file defines all the known event and field names for LTTng kernel * traces, for versions of lttng-modules 2.7 and above. @@ -21,12 +25,65 @@ package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout; @SuppressWarnings("javadoc") public class Lttng27EventLayout extends Lttng26EventLayout { + private static final String X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY = "x86_irq_vectors_local_timer_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_LOCAL_TIMER_EXIT = "x86_irq_vectors_local_timer_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_RESCHEDULE_ENTRY = "x86_irq_vectors_reschedule_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_RESCHEDULE_EXIT = "x86_irq_vectors_reschedule_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_SPURIOUS_ENTRY = "x86_irq_vectors_spurious_apic_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_SPURIOUS_EXIT = "x86_irq_vectors_spurious_apic_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_ERROR_APIC_ENTRY = "x86_irq_vectors_error_apic_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_ERROR_APIC_EXIT = "x86_irq_vectors_error_apic_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_IPI_ENTRY = "x86_irq_vectors_ipi_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_IPI_EXIT = "x86_irq_vectors_ipi_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_IRQ_WORK_ENTRY = "x86_irq_vectors_irq_work_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_IRQ_WORK_EXIT = "x86_irq_vectors_irq_work_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY = "x86_irq_vectors_call_function_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_CALL_FUNCTION_EXIT = "x86_irq_vectors_call_function_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY = "x86_irq_vectors_call_function_single_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT = "x86_irq_vectors_call_function_single_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY = "x86_irq_vectors_threshold_apic_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT = "x86_irq_vectors_threshold_apic_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY = "x86_irq_vectors_deferred_error_apic_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT = "x86_irq_vectors_deferred_error_apic_exit"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_THERMAL_APIC_ENTRY = "x86_irq_vectors_thermal_apic_entry"; //$NON-NLS-1$ + private static final String X86_IRQ_VECTORS_THERMAL_APIC_EXIT = "x86_irq_vectors_thermal_apic_exit"; //$NON-NLS-1$ + + private static final Collection IPI_ENTRY_SET = ImmutableSet.of( + X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY, + X86_IRQ_VECTORS_RESCHEDULE_ENTRY, + X86_IRQ_VECTORS_SPURIOUS_ENTRY, + X86_IRQ_VECTORS_ERROR_APIC_ENTRY, + X86_IRQ_VECTORS_IPI_ENTRY, + X86_IRQ_VECTORS_IRQ_WORK_ENTRY, + X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY, + X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY, + X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY, + X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY, + X86_IRQ_VECTORS_THERMAL_APIC_ENTRY); + + private static final Collection IPI_EXIT_SET = ImmutableSet.of( + X86_IRQ_VECTORS_LOCAL_TIMER_EXIT, + X86_IRQ_VECTORS_RESCHEDULE_EXIT, + X86_IRQ_VECTORS_SPURIOUS_EXIT, + X86_IRQ_VECTORS_ERROR_APIC_EXIT, + X86_IRQ_VECTORS_IPI_EXIT, + X86_IRQ_VECTORS_IRQ_WORK_EXIT, + X86_IRQ_VECTORS_CALL_FUNCTION_EXIT, + X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT, + X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT, + X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT, + X86_IRQ_VECTORS_THERMAL_APIC_EXIT); + /** * Constructor */ protected Lttng27EventLayout() {} - public static final Lttng27EventLayout INSTANCE = new Lttng27EventLayout(); + private static final Lttng27EventLayout INSTANCE = new Lttng27EventLayout(); + + public static Lttng27EventLayout getInstance() { + return INSTANCE; + } // ------------------------------------------------------------------------ // New event definition in LTTng 2.7 @@ -52,6 +109,112 @@ public class Lttng27EventLayout extends Lttng26EventLayout { return "timer_hrtimer_expire_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$ + } + + public String x86IrqVectorsLocalTimerEntry() { + return X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY; + } + + public String x86IrqVectorsLocalTimerExit() { + return X86_IRQ_VECTORS_LOCAL_TIMER_EXIT; + } + + public String x86IrqVectorsRescheduleEntry() { + return X86_IRQ_VECTORS_RESCHEDULE_ENTRY; + } + + public String x86IrqVectorsRescheduleExit() { + return X86_IRQ_VECTORS_RESCHEDULE_EXIT; + } + + public String x86IrqVectorsSpuriousApicEntry() { + return X86_IRQ_VECTORS_SPURIOUS_ENTRY; + } + + public String x86IrqVectorsSpuriousApicExit() { + return X86_IRQ_VECTORS_SPURIOUS_EXIT; + } + + public String x86IrqVectorsErrorApicEntry() { + return X86_IRQ_VECTORS_ERROR_APIC_ENTRY; + } + + public String x86IrqVectorsErrorApicExit() { + return X86_IRQ_VECTORS_ERROR_APIC_EXIT; + } + + public String x86IrqVectorsIpiEntry() { + return X86_IRQ_VECTORS_IPI_ENTRY; + } + + public String x86IrqVectorsIpiExit() { + return X86_IRQ_VECTORS_IPI_EXIT; + } + + public String x86IrqVectorsIrqWorkEntry() { + return X86_IRQ_VECTORS_IRQ_WORK_ENTRY; + } + + public String x86IrqVectorsIrqWorkExit() { + return X86_IRQ_VECTORS_IRQ_WORK_EXIT; + } + + public String x86IrqVectorsCallFunctionEntry() { + return X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY; + } + + public String x86IrqVectorsCallFunctionExit() { + return X86_IRQ_VECTORS_CALL_FUNCTION_EXIT; + } + + public String x86IrqVectorsCallFunctionSingleEntry() { + return X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY; + } + + public String x86IrqVectorsCallFunctionSingleExit() { + return X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT; + } + + public String x86IrqVectorsThresholdApicEntry() { + return X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY; + } + + public String x86IrqVectorsThresholdApicExit() { + return X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT; + } + + public String x86IrqVectorsDeferredErrorApicEntry() { + return X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY; + } + + public String x86IrqVectorsDeferredErrorApicExit() { + return X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT; + } + + public String x86IrqVectorsThermalApicEntry() { + return X86_IRQ_VECTORS_THERMAL_APIC_ENTRY; + } + + public String x86IrqVectorsThermalApicExit() { + return X86_IRQ_VECTORS_THERMAL_APIC_EXIT; + } + + public Collection getX86IrqVectorsEntry() { + return IPI_ENTRY_SET; + } + + public Collection getX86IrqVectorsExit() { + return IPI_EXIT_SET; + } + // ------------------------------------------------------------------------ // New field definitions in LTTng 2.7 // ------------------------------------------------------------------------ diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng28EventLayout.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng28EventLayout.java new file mode 100644 index 0000000000..cd3a9e175c --- /dev/null +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng28EventLayout.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2015 Ericsson, École Polytechnique de Montréal + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + ******************************************************************************/ + +package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout; + +/** + * This file defines all the known event and field names for LTTng kernel + * traces, for versions of lttng-modules 2.8 and above. + * + * @author Francis Giraldeau + */ +public class Lttng28EventLayout extends Lttng27EventLayout { + + /** + * Constructor + */ + protected Lttng28EventLayout() { + } + + private static final Lttng28EventLayout INSTANCE = new Lttng28EventLayout(); + + public static Lttng28EventLayout getInstance() { + return INSTANCE; + } + + // ------------------------------------------------------------------------ + // New definitions in LTTng 2.8 + // ------------------------------------------------------------------------ + + /** + * Event called when waking a task; this event is guaranteed to be called + * from the waking context. + * + * @return The name of the event + * @since 2.0 + */ + public String eventSchedProcessWaking() { + return "sched_waking"; //$NON-NLS-1$ + } + +} diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/trace/LttngKernelTrace.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/trace/LttngKernelTrace.java index 2ec5362895..00e813be8c 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/trace/LttngKernelTrace.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/trace/LttngKernelTrace.java @@ -30,6 +30,7 @@ import org.eclipse.tracecompass.common.core.NonNullUtils; import org.eclipse.tracecompass.internal.lttng2.kernel.core.Activator; import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.Lttng26EventLayout; import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.Lttng27EventLayout; +import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.Lttng28EventLayout; import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.LttngEventLayout; import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.PerfEventLayout; import org.eclipse.tracecompass.tmf.core.event.ITmfEvent; @@ -57,7 +58,8 @@ public class LttngKernelTrace extends CtfTmfTrace implements IKernelTrace { private enum OriginTracer { LTTNG(LttngEventLayout.getInstance()), LTTNG26(Lttng26EventLayout.getInstance()), - LTTNG27(Lttng27EventLayout.INSTANCE), + LTTNG27(Lttng27EventLayout.getInstance()), + LTTNG28(Lttng28EventLayout.getInstance()), PERF(PerfEventLayout.getInstance()); private final @NonNull IKernelAnalysisEventLayout fLayout; @@ -126,7 +128,9 @@ public class LttngKernelTrace extends CtfTmfTrace implements IKernelTrace { } else if ("lttng-modules".equals(tracerName)) { //$NON-NLS-1$ /* Look for specific versions of LTTng */ if (tracerMajor >= 2) { - if (tracerMinor >= 7) { + if (tracerMinor >= 8) { + return OriginTracer.LTTNG28; + } else if (tracerMinor >= 7) { return OriginTracer.LTTNG27; } else if (tracerMinor >= 6) { return OriginTracer.LTTNG26;