os.linux: Make the priority of the KernelState available as an Aspect
authorChristian Mansky <christian.mansky@gmx.at>
Fri, 27 Feb 2015 09:57:11 +0000 (10:57 +0100)
committerAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Wed, 11 Mar 2015 18:09:23 +0000 (14:09 -0400)
Since bug 460635 points into the direction of using aspects for the
properties view, I think it makes sense to create a ThreadPriorityAspect
making the priority tracked in the KernelState vaialable as an aspect.

Change-Id: Icf3ed0a03fd9f6e993465bc1c155c185e058de54
Signed-off-by: Christian Mansky <christian.mansky@gmx.at>
Reviewed-on: https://git.eclipse.org/r/42884
Reviewed-by: Hudson CI
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Tested-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Reviewed-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
org.eclipse.tracecompass.analysis.os.linux.core.tests/src/org/eclipse/tracecompass/analysis/os/linux/core/tests/kernelanalysis/KernelTidAspectTest.java
org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/kernelanalysis/Messages.java
org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/kernelanalysis/ThreadPriorityAspect.java [new file with mode: 0644]
org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/kernelanalysis/messages.properties
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/trace/LttngKernelTrace.java

index 054ab38948ee6d61cca4879da71c60fc79e54587..f1be7084f17faae35febbe13acf5914f1e02ddab 100644 (file)
@@ -23,6 +23,7 @@ import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.KernelAnalysis;
+import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.ThreadPriorityAspect;
 import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.KernelTidAspect;
 import org.eclipse.tracecompass.analysis.os.linux.core.tests.Activator;
 import org.eclipse.tracecompass.common.core.NonNullUtils;
@@ -68,6 +69,7 @@ public class KernelTidAspectTest {
             ImmutableSet.Builder<ITmfEventAspect> builder = ImmutableSet.builder();
             builder.addAll(super.getEventAspects());
             builder.add(KernelTidAspect.INSTANCE);
+            builder.add(ThreadPriorityAspect.INSTANCE);
             return NonNullUtils.checkNotNull(builder.build());
         }
 
index 3c112650a9cd18976eda77df0d1c4968e1dea13c..d2e8255368ef6b01bbd07967c442b068dc364752 100644 (file)
@@ -22,7 +22,17 @@ import org.eclipse.osgi.util.NLS;
  */
 @SuppressWarnings("javadoc")
 public class Messages extends NLS {
-    private static final String BUNDLE_NAME = "org.eclipse.tracecompass.lttng2.kernel.core.analysis.messages"; //$NON-NLS-1$
+    private static final String BUNDLE_NAME = "org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.messages"; //$NON-NLS-1$
+
+    /**
+     * @since 1.0
+     */
+    public static @Nullable String AspectName_Prio;
+
+    /**
+     * @since 1.0
+     */
+    public static @Nullable String AspectHelpText_Prio;
 
     public static @Nullable String LttngKernelAnalysisModule_Help;
 
diff --git a/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/kernelanalysis/ThreadPriorityAspect.java b/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/kernelanalysis/ThreadPriorityAspect.java
new file mode 100644 (file)
index 0000000..68452b1
--- /dev/null
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Keba AG
+ *
+ * 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
+ *
+ * Contributors:
+ *   Christian Mansky - Initial implementation
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis;
+
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
+import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
+import org.eclipse.tracecompass.tmf.core.event.aspect.ITmfEventAspect;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
+
+/**
+ * This aspect finds the priority of the thread running from this event using
+ * the {@link KernelAnalysis}.
+ *
+ * @author Christian Mansky
+ * @since 1.0
+ */
+public final class ThreadPriorityAspect implements ITmfEventAspect {
+
+    /** The singleton instance */
+    public static final ThreadPriorityAspect INSTANCE = new ThreadPriorityAspect();
+
+    private ThreadPriorityAspect() {
+    }
+
+    @Override
+    public final String getName() {
+        return NonNullUtils.nullToEmptyString(Messages.AspectName_Prio);
+    }
+
+    @Override
+    public final String getHelpText() {
+        return NonNullUtils.nullToEmptyString(Messages.AspectHelpText_Prio);
+    }
+
+    @Override
+    public @Nullable Integer resolve(ITmfEvent event) {
+        KernelAnalysis kernelAnalysis = TmfTraceUtils.getAnalysisModuleOfClass(event.getTrace(), KernelAnalysis.class, KernelAnalysis.ID);
+        if (kernelAnalysis == null) {
+            return null;
+        }
+
+        Integer tid = KernelTidAspect.INSTANCE.resolve(event);
+        if (tid == null) {
+            return null;
+        }
+
+        Integer prio = KernelThreadInformationProvider.getThreadPrio(kernelAnalysis, tid, event.getTimestamp().getValue());
+        return prio;
+    }
+
+}
index 0ae0b51c129992436dfccb1bdbeeae7aba840a6f..a666ee1a7600a05380fc6368831314feeef4ca2c 100644 (file)
@@ -10,4 +10,6 @@
 #     Geneviève Bastien - Initial API and implementation
 ###############################################################################
 
+AspectName_Prio=Prio
+AspectHelpText_Prio=The priority of the thread this event belongs to
 LttngKernelAnalysisModule_Help=Builds the LTTng2 kernel state system to populate the Control Flow view and the Resources View
index 5de407442ae18acdd0848cb391a0000c18c26d5a..c0b58849b4f53624708a12f4efaaf79adb76e7d0 100644 (file)
@@ -22,6 +22,7 @@ import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.ThreadPriorityAspect;
 import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.KernelTidAspect;
 import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
 import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelTrace;
@@ -71,6 +72,7 @@ public class LttngKernelTrace extends CtfTmfTrace implements IKernelTrace {
         ImmutableSet.Builder<ITmfEventAspect> builder = ImmutableSet.builder();
         builder.addAll(CtfTmfTrace.CTF_ASPECTS);
         builder.add(KernelTidAspect.INSTANCE);
+        builder.add(ThreadPriorityAspect.INSTANCE);
         LTTNG_KERNEL_ASPECTS = NonNullUtils.checkNotNull(builder.build());
     }
 
This page took 0.027884 seconds and 5 git commands to generate.