diff options
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.java | 19 |
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; } } |