@@ -369,9 +369,9 @@ void KsGLWidget::loadData(KsDataStore *data)
_model.fill(_data->rows(), _data->size());
/* Make a default CPU list. All CPUs will be plotted. */
- _cpuList = {};
- for (int i = 0; i < nCPUs; ++i)
- _cpuList.append(i);
+ if (_cpuList.isEmpty())
+ for (int i = 0; i < nCPUs; ++i)
+ _cpuList.append(i);
/* Make a default task list. No tasks will be plotted. */
_taskList = {};
@@ -172,6 +172,45 @@ KsMainWindow::~KsMainWindow()
kshark_free(kshark_ctx);
}
+/** Set the list ot CPU cores to be plotted. */
+void KsMainWindow::setCPUPlots(QVector<int> cpus)
+{
+ int nCPUs = tep_get_cpus(_data.tep());
+ auto lamCPUCheck = [=] (int cpu) {
+ if (cpu >= nCPUs) {
+ qWarning() << "Warning: No CPU" << cpu << "found in the data.";
+ return true;
+ }
+
+ return false;
+ };
+
+ cpus.erase(std::remove_if(cpus.begin(), cpus.end(), lamCPUCheck),
+ cpus.end());
+
+ _graph.cpuReDraw(cpus);
+}
+
+/** Set the list ot tasks (pids) to be plotted. */
+void KsMainWindow::setTaskPlots(QVector<int> pids)
+{
+ QVector<int> allPids = KsUtils::getPidList();
+ auto lamPidCheck = [=] (int pid) {
+ int i = allPids.indexOf(pid);
+ if (i < 0) {
+ qWarning() << "Warning: No Pid" << pid << "found in the data.";
+ return true;
+ }
+
+ return false;
+ };
+
+ pids.erase(std::remove_if(pids.begin(), pids.end(), lamPidCheck),
+ pids.end());
+
+ _graph.taskReDraw(pids);
+}
+
/**
* Reimplemented event handler used to update the geometry of the window on
* resize events.
@@ -61,6 +61,10 @@ public:
_plugins.unregisterPlugin(plugin);
}
+ void setCPUPlots(QVector<int> cpus);
+
+ void setTaskPlots(QVector<int> pids);
+
void resizeEvent(QResizeEvent* event);
/** Set the Full Screen mode. */
The methods are added to the public interface of the KsMainWindow class and can be used to pre-select the CPU and Task plots to be shown, before opening the GUI. Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com> --- kernel-shark/src/KsGLWidget.cpp | 6 ++--- kernel-shark/src/KsMainWindow.cpp | 39 +++++++++++++++++++++++++++++++ kernel-shark/src/KsMainWindow.hpp | 4 ++++ 3 files changed, 46 insertions(+), 3 deletions(-)