Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/event/aspect/CtfCpuAspect.java')
-rw-r--r--ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/event/aspect/CtfCpuAspect.java19
1 files changed, 18 insertions, 1 deletions
diff --git a/ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/event/aspect/CtfCpuAspect.java b/ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/event/aspect/CtfCpuAspect.java
index 2dfa277f5a..0ec22afc5f 100644
--- a/ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/event/aspect/CtfCpuAspect.java
+++ b/ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/event/aspect/CtfCpuAspect.java
@@ -12,23 +12,40 @@
package org.eclipse.tracecompass.tmf.ctf.core.event.aspect;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.ctf.core.event.IEventDefinition;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
+import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
import org.eclipse.tracecompass.tmf.core.event.aspect.TmfCpuAspect;
import org.eclipse.tracecompass.tmf.ctf.core.event.CtfTmfEvent;
/**
- * "CPU" event aspect for CTF traces.
+ * "CPU" event aspect for CTF traces. Resolves cpu_id in stream first, event
+ * fields second.
*
* @author Alexandre Montplaisir
*/
public class CtfCpuAspect extends TmfCpuAspect {
+ /**
+ * Refered in the CTF spec
+ */
+ private static final @NonNull String CPU_ID = "cpu_id"; //$NON-NLS-1$
+
@Override
public Integer resolve(ITmfEvent event) {
if (!(event instanceof CtfTmfEvent)) {
return null;
}
int cpu = ((CtfTmfEvent) event).getCPU();
+ if (cpu == IEventDefinition.UNKNOWN_CPU) {
+ ITmfEventField content = event.getContent();
+ Long fieldValue = null;
+ if (content != null) {
+ fieldValue = content.getFieldValue(Long.class, CPU_ID);
+ }
+ return fieldValue == null ? null : fieldValue.intValue();
+ }
return cpu;
}
}

Back to the top