/**
* The file name of the History Tree
*/
- @NonNull
- public static final String HISTORY_TREE_FILE_NAME = "stateHistory.ht"; //$NON-NLS-1$
+ public static final @NonNull String HISTORY_TREE_FILE_NAME = "stateHistory.ht"; //$NON-NLS-1$
/** The ID of this analysis module */
- public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.analysis"; //$NON-NLS-1$
+ public static final @NonNull String ID = "org.eclipse.linuxtools.lttng2.kernel.analysis"; //$NON-NLS-1$
/*
* TODO: Decide which events should be mandatory for the analysis, once the
import org.eclipse.linuxtools.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.linuxtools.tmf.core.statesystem.ITmfStateProvider;
import org.eclipse.linuxtools.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
/**
* This analysis module computes the CPU usage of a system from a kernel trace.
Map<String, Long> map = new HashMap<>();
Map<String, Long> totalMap = new HashMap<>();
+ ITmfTrace trace = getTrace();
ITmfStateSystem cpuSs = getStateSystem();
- if (cpuSs == null) {
+ if (trace == null || cpuSs == null) {
return map;
}
- TmfStateSystemAnalysisModule module = getTrace().getAnalysisModuleOfClass(TmfStateSystemAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return map;
- }
- module.schedule();
- module.waitForInitialization();
- ITmfStateSystem kernelSs = module.getStateSystem();
+ ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
if (kernelSs == null) {
return map;
}
package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
*/
public class ControlFlowEntry extends TimeGraphEntry {
- private final ITmfTrace fTrace;
+ private final @NonNull ITmfTrace fTrace;
private final int fThreadId;
private final int fParentThreadId;
private final int fThreadQuark;
* @param endTime
* The end time of this process
*/
- public ControlFlowEntry(int quark, ITmfTrace trace, String execName, int threadId, int parentThreadId, long startTime, long endTime) {
+ public ControlFlowEntry(int quark, @NonNull ITmfTrace trace, String execName, int threadId, int parentThreadId, long startTime, long endTime) {
super(execName, startTime, endTime);
fTrace = trace;
fThreadId = threadId;
*
* @return the entry's trace
*/
- public ITmfTrace getTrace() {
+ public @NonNull ITmfTrace getTrace() {
return fTrace;
}
import org.eclipse.linuxtools.statesystem.core.exceptions.TimeRangeException;
import org.eclipse.linuxtools.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.linuxtools.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.linuxtools.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
return retMap;
}
ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();
- LttngKernelAnalysisModule module = entry.getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return retMap;
- }
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
if (ssq == null) {
return retMap;
}
return;
}
ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();
- LttngKernelAnalysisModule module = entry.getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return;
- }
- ITmfStateSystem ss = module.getStateSystem();
+ ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
if (ss == null) {
return;
}
import org.eclipse.linuxtools.statesystem.core.exceptions.TimeRangeException;
import org.eclipse.linuxtools.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.linuxtools.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.linuxtools.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.core.trace.TmfTraceManager;
import org.eclipse.linuxtools.tmf.ui.views.timegraph.AbstractTimeGraphView;
@Override
protected void buildEventList(final ITmfTrace trace, ITmfTrace parentTrace, IProgressMonitor monitor) {
- LttngKernelAnalysisModule module = trace.getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
+ if (trace == null) {
return;
}
- module.schedule();
- module.waitForInitialization();
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
if (ssq == null) {
return;
}
private void buildStatusEvents(ITmfTrace trace, ControlFlowEntry entry, IProgressMonitor monitor, long start, long end) {
if (start < entry.getEndTime() && end > entry.getStartTime()) {
- LttngKernelAnalysisModule module = entry.getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return;
- }
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
if (ssq == null) {
return;
}
if (realEnd <= realStart) {
return null;
}
- LttngKernelAnalysisModule module = entry.getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return null;
- }
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
if (ssq == null) {
return null;
}
if (thread > 0) {
break;
}
- LttngKernelAnalysisModule module = trace.getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
+ if (trace == null) {
continue;
}
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
if (ssq == null) {
continue;
}
return list;
}
for (ITmfTrace trace : traces) {
- LttngKernelAnalysisModule module = trace.getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
+ if (trace == null) {
continue;
}
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
if (ssq == null) {
continue;
}
import org.eclipse.linuxtools.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.linuxtools.statesystem.core.statevalue.ITmfStateValue;
import org.eclipse.linuxtools.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.ui.viewers.tree.AbstractTmfTreeViewer;
import org.eclipse.linuxtools.tmf.ui.viewers.tree.ITmfTreeColumnDataProvider;
import org.eclipse.linuxtools.tmf.ui.viewers.tree.ITmfTreeViewerEntry;
if (execName != null) {
return execName;
}
- TmfStateSystemAnalysisModule module = getTrace().getAnalysisModuleOfClass(TmfStateSystemAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
+ ITmfTrace trace = getTrace();
+ if (trace == null) {
return tid;
}
- /*
- * Do not schedule the analysis here. It should have been executed when
- * the CPU usage analysis was executed. If it's not available, there
- * might be a good reason (disk space?) so don't force it.
- */
- ITmfStateSystem kernelSs = module.getStateSystem();
+ ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
if (kernelSs == null) {
return tid;
}
package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.resources;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
}
private final int fId;
- private final ITmfTrace fTrace;
+ private final @NonNull ITmfTrace fTrace;
private final Type fType;
private final int fQuark;
* @param id
* The id of this entry
*/
- public ResourcesEntry(int quark, ITmfTrace trace, String name, long startTime, long endTime, Type type, int id) {
+ public ResourcesEntry(int quark, @NonNull ITmfTrace trace, String name,
+ long startTime, long endTime, Type type, int id) {
super(name, startTime, endTime);
fId = id;
fTrace = trace;
* @param id
* The id of this entry
*/
- public ResourcesEntry(ITmfTrace trace, String name, long startTime, long endTime, int id) {
+ public ResourcesEntry(@NonNull ITmfTrace trace, String name,
+ long startTime, long endTime, int id) {
this(-1, trace, name, startTime, endTime, Type.NULL, id);
}
* @param id
* The id of this entry
*/
- public ResourcesEntry(int quark, ITmfTrace trace, long startTime, long endTime, Type type, int id) {
+ public ResourcesEntry(int quark, @NonNull ITmfTrace trace,
+ long startTime, long endTime, Type type, int id) {
this(quark, trace, type.toString() + " " + id, startTime, endTime, type, id); //$NON-NLS-1$
}
*
* @return the entry's trace
*/
- public ITmfTrace getTrace() {
+ public @NonNull ITmfTrace getTrace() {
return fTrace;
}
import org.eclipse.linuxtools.statesystem.core.exceptions.TimeRangeException;
import org.eclipse.linuxtools.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.linuxtools.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.linuxtools.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
ResourcesEntry entry = (ResourcesEntry) event.getEntry();
if (tcEvent.hasValue()) {
- LttngKernelAnalysisModule module = entry.getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return retMap;
- }
- ITmfStateSystem ss = module.getStateSystem();
+ ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
if (ss == null) {
return retMap;
}
return;
}
- LttngKernelAnalysisModule module = entry.getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return;
- }
- ITmfStateSystem ss = module.getStateSystem();
+ ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
if (ss == null) {
return;
}
import org.eclipse.linuxtools.statesystem.core.exceptions.StateValueTypeException;
import org.eclipse.linuxtools.statesystem.core.exceptions.TimeRangeException;
import org.eclipse.linuxtools.statesystem.core.interval.ITmfStateInterval;
+import org.eclipse.linuxtools.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.ui.views.timegraph.AbstractTimeGraphView;
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
@Override
protected void buildEventList(ITmfTrace trace, ITmfTrace parentTrace, IProgressMonitor monitor) {
- LttngKernelAnalysisModule module = trace.getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
+ if (trace == null) {
return;
}
- module.schedule();
- module.waitForInitialization();
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
if (ssq == null) {
return;
}
long startTime, long endTime, long resolution,
IProgressMonitor monitor) {
ResourcesEntry resourcesEntry = (ResourcesEntry) entry;
- LttngKernelAnalysisModule module = resourcesEntry.getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
- if (module == null) {
- return null;
- }
- ITmfStateSystem ssq = module.getStateSystem();
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(resourcesEntry.getTrace(), LttngKernelAnalysisModule.ID);
if (ssq == null) {
return null;
}
PARTIAL
}
+
+ /**
+ * Retrieve a state system belonging to trace, by passing the ID of the
+ * relevant analysis module.
+ *
+ * This will start the execution of the analysis module, and start the
+ * construction of the state system, if needed.
+ *
+ * @param trace
+ * The trace for which you want the state system
+ * @param moduleId
+ * The ID of the state system analysis module
+ * @return The state system, or null if there was no match
+ * @since 3.1
+ */
+ public static @Nullable ITmfStateSystem getStateSystem(ITmfTrace trace, String moduleId) {
+ TmfStateSystemAnalysisModule module =
+ trace.getAnalysisModuleOfClass(TmfStateSystemAnalysisModule.class, moduleId);
+ if (module != null) {
+ module.schedule();
+ module.waitForInitialization();
+ /*
+ * FIXME If we keep a reference to "module", the compiler expects us to
+ * close it. The Analysis Module's API should be reworked to not expose
+ * these objects directly (utility classes instead?)
+ */
+ return module.getStateSystem();
+ }
+ return null;
+ }
+
/**
* Get the state provider for this analysis module
*