lttng: additional definitions for lttng 2.7 and 2.8
authorFrancis Giraldeau <francis.giraldeau@gmail.com>
Thu, 29 Oct 2015 14:13:39 +0000 (10:13 -0400)
committerFrancis Giraldeau <francis.giraldeau@gmail.com>
Tue, 24 Nov 2015 21:29:46 +0000 (16:29 -0500)
* 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 <francis.giraldeau@gmail.com>
Reviewed-on: https://git.eclipse.org/r/59230
Reviewed-by: Hudson CI
Reviewed-by: Alexandre Montplaisir <alexmonthy@efficios.com>
analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng27EventLayout.java
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng28EventLayout.java [new file with mode: 0644]
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/trace/LttngKernelTrace.java

index dc500a9c1177541f8d4ab74b0be4aa837b2f0985..7a59d87e07c0196c459029d599cd18f612f79103 100644 (file)
@@ -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<String> 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;
+    }
+
 }
index 9004f33c06357577a4a861eaa675bbe4a282fd2b..dbd151d1fee0d16fbcae16ade7d0877a70ed530e 100644 (file)
 
 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<String> 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<String> 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<String> getX86IrqVectorsEntry() {
+        return IPI_ENTRY_SET;
+    }
+
+    public Collection<String> 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 (file)
index 0000000..cd3a9e1
--- /dev/null
@@ -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$
+    }
+
+}
index 2ec5362895c3cf24ffd1b3a9ad502df7ba1b503d..00e813be8c416803fdf98cdede3a70965dac149e 100644 (file)
@@ -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;
This page took 0.029873 seconds and 5 git commands to generate.