final String eventName = event.getName();
if (eventName.equals(fLayout.eventSchedSwitch())) {
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
+ Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+ if (cpu == null) {
/* We couldn't find any CPU information, ignore this event */
return;
}
- Integer cpu = (Integer) cpuObj;
/*
* Fields: string prev_comm, int32 prev_tid, int32 prev_prio, int64
@Override
public @Nullable Integer resolve(ITmfEvent event) {
/* Find the CPU this event is run on */
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(),
+ Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(),
TmfCpuAspect.class, event);
- if (cpuObj == null) {
+ if (cpu == null) {
return null;
}
- Integer cpu = (Integer) cpuObj;
/* Find the analysis module for the trace */
KernelAnalysisModule analysis = TmfTraceUtils.getAnalysisModuleOfClass(event.getTrace(),
return;
}
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
+ Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+ if (cpu == null) {
/* We couldn't find any CPU information, ignore this event */
return;
}
- Integer cpu = (Integer) cpuObj;
final String eventName = event.getName();
final long ts = event.getTimestamp().getValue();
package org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.handlers;
import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
import org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.building.LttngKernelExecGraphProvider;
import org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.building.LttngKernelExecGraphProvider.Context;
import org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.model.LttngInterruptContext;
}
private void pushInterruptContext(ITmfEvent event, Context ctx) {
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
- throw new NullPointerException();
- }
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
LttngSystemModel system = getProvider().getSystem();
LttngInterruptContext interruptCtx = new LttngInterruptContext(event, ctx);
}
private void popInterruptContext(ITmfEvent event, Context ctx) {
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
- throw new NullPointerException();
- }
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
LttngSystemModel system = getProvider().getSystem();
/* TODO: add a warning bookmark if the interrupt context is not coherent */
private void handleSchedWakeup(ITmfEvent event) {
TmfGraph graph = NonNullUtils.checkNotNull(getProvider().getAssignedGraph());
String host = event.getTrace().getHostId();
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
- throw new NullPointerException();
- }
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
LttngEventLayout eventLayout = getProvider().getEventLayout();
LttngSystemModel system = getProvider().getSystem();
}
private void handleInetSockLocalIn(ITmfEvent event) {
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
- throw new NullPointerException();
- }
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
String host = event.getTrace().getHostId();
LttngSystemModel system = getProvider().getSystem();
}
private void handleInetSockLocalOut(ITmfEvent event) {
- Object cpuObj = NonNullUtils.checkNotNull(TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
String host = event.getTrace().getHostId();
LttngSystemModel system = getProvider().getSystem();
TmfGraph graph = NonNullUtils.checkNotNull(getProvider().getAssignedGraph());
Long vec = EventField.getLong(event, eventLayout.fieldVec());
if (vec == LinuxValues.SOFTIRQ_NET_RX || vec == LinuxValues.SOFTIRQ_NET_TX) {
- Object cpuObj = NonNullUtils.checkNotNull(TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
LttngWorker k = getOrCreateKernelWorker(event, cpu);
graph.add(k, new TmfVertex(event.getTimestamp().getValue()));
}
}
private void handleSchedSwitch(ITmfEvent event) {
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
- throw new NullPointerException();
- }
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
LttngEventLayout eventLayout = getProvider().getEventLayout();
LttngSystemModel system = getProvider().getSystem();
private void handleSchedWakeup(ITmfEvent event) {
String host = event.getTrace().getHostId();
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
- throw new NullPointerException();
- }
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
LttngEventLayout eventLayout = getProvider().getEventLayout();
LttngSystemModel system = getProvider().getSystem();
private void handleSchedProcessExec(ITmfEvent event) {
String host = event.getTrace().getHostId();
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
- throw new NullPointerException();
- }
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
LttngEventLayout eventLayout = getProvider().getEventLayout();
LttngSystemModel system = getProvider().getSystem();
final long ts = event.getTimestamp().getValue();
final String hostId = event.getTrace().getHostId();
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
+ final Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+ if (cpu == null) {
/* We couldn't find any CPU information, ignore this event */
return;
}
- Integer cpu = (Integer) cpuObj;
/* Find a virtual machine with the vm uid payload value */
ITmfEventField data = content.getField(QemuKvmStrings.VM_UID_PAYLOAD);
if (host.isGuest()) {
/* Get the event's CPU */
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
+ Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+ if (cpu == null) {
/*
* We couldn't find any CPU information, ignore this
* event
*/
break;
}
- Integer cpu = (Integer) cpuObj;
/*
* If sched switch is from a guest, just update the status
}
/* Get the CPU the event is running on */
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj == null) {
+ Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+ if (cpu == null) {
/* We couldn't find any CPU information, ignore this event */
return null;
}
- Integer cpu = (Integer) cpuObj;
Integer currentTid = KernelThreadInformationProvider.getThreadOnCpu(module, cpu, ts);
if (currentTid == null) {
}
if (name.equals(TmfXmlStrings.CPU)) {
/* See if the event advertises a CPU aspect */
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(
+ Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(
event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj != null) {
- Integer cpu = (Integer) cpuObj;
+ if (cpu != null) {
quark = getQuarkRelativeAndAdd(startQuark, cpu.toString());
}
} else {
/* Exception for "CPU", returns the source of this event */
/* FIXME : Nameclash if a eventfield have "cpu" for name. */
if (fieldName.equals(TmfXmlStrings.CPU)) {
- Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
- if (cpuObj != null) {
- Integer cpu = (Integer) cpuObj;
+ Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+ if (cpu != null) {
return TmfStateValue.newValueInt(cpu.intValue());
}
}
return null;
}
+ /**
+ * Return the first result of the first aspect that resolves as non null for
+ * the event received in parameter. The result is cast to an Integer if
+ * possible, otherwise null is returned.
+ *
+ * @param trace
+ * The trace for which you want the event aspects
+ * @param aspectClass
+ * The class of the aspect(s) to resolve
+ * @param event
+ * The event for which to get the aspect
+ * @return Integer of the first result of the
+ * {@link ITmfEventAspect#resolve(ITmfEvent)} that returns non null
+ * for the event or {@code null} otherwise
+ * @since 2.0
+ */
+ public static @Nullable <T extends ITmfEventAspect> Integer resolveIntEventAspectOfClassForEvent(
+ ITmfTrace trace, Class<T> aspectClass, ITmfEvent event) {
+ Object result = resolveEventAspectOfClassForEvent(trace, aspectClass, event);
+ if (result instanceof Integer) {
+ return (Integer) result;
+ }
+ return null;
+ }
+
/**
* Checks for text file.
*