All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] Add dialog for loading user-defined plugins
@ 2019-03-13 15:07 Yordan Karadzhov
  2019-03-13 15:07 ` [PATCH v2 1/4] kernel-shark: Define addPlugins method for KsPluginManager Yordan Karadzhov
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Yordan Karadzhov @ 2019-03-13 15:07 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, Yordan Karadzhov

So far loading user-defined plugins was possible only from the
command line

./kernelshark -p /path/to/your/plugin-lib.so

This patch set adds the possibility to load plugins from the GUI
itself by using a dedicated dialog available in Tools

Changes in v2:
  - The dialog can now select and load multiple plugins at a time, as
suggested by Slavomir and Steven .

  - After re-initializing the list of plugins the data is reloaded.
Not reloading the data was a bug in the previous version.

Yordan Karadzhov (4):
  kernel-shark: Define addPlugins method for KsPluginManager
  kernel-shark: Add dialog for user-defined plugins to the Tools menu
  kernel-shark: Rename the manu action for managing registered plugins
  kernel-shark: Add icons for "Add plugins" and "Manage plugins"

 kernel-shark/src/KsMainWindow.cpp | 34 ++++++++++++++++++++++++++-----
 kernel-shark/src/KsMainWindow.hpp |  6 +++++-
 kernel-shark/src/KsUtils.cpp      | 23 +++++++++++++++++++++
 kernel-shark/src/KsUtils.hpp      |  3 +++
 4 files changed, 60 insertions(+), 6 deletions(-)

-- 
2.19.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/4] kernel-shark: Define addPlugins method for KsPluginManager
  2019-03-13 15:07 [PATCH v2 0/4] Add dialog for loading user-defined plugins Yordan Karadzhov
@ 2019-03-13 15:07 ` Yordan Karadzhov
  2019-03-13 15:07 ` [PATCH v2 2/4] kernel-shark: Add dialog for user-defined plugins to the Tools menu Yordan Karadzhov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Yordan Karadzhov @ 2019-03-13 15:07 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, Yordan Karadzhov

The method can be used to register and load user-defined plugins.
All other previously loaded plugins will be reinitialized and the
data will be reloaded.

Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsUtils.cpp | 23 +++++++++++++++++++++++
 kernel-shark/src/KsUtils.hpp |  3 +++
 2 files changed, 26 insertions(+)

diff --git a/kernel-shark/src/KsUtils.cpp b/kernel-shark/src/KsUtils.cpp
index 3585cca..6af0c66 100644
--- a/kernel-shark/src/KsUtils.cpp
+++ b/kernel-shark/src/KsUtils.cpp
@@ -596,6 +596,29 @@ void KsPluginManager::unregisterPlugin(const QString &plugin)
 	}
 }
 
+/** @brief Add to the list and initialize user-provided plugins. All other
+ *	   previously loaded plugins will be reinitialized and the data will be
+ *	   reloaded.
+ *
+ * @param fileNames: the library files (.so) of the plugins.
+*/
+void KsPluginManager::addPlugins(const QStringList &fileNames)
+{
+	kshark_context *kshark_ctx(nullptr);
+
+	if (!kshark_instance(&kshark_ctx))
+		return;
+
+	kshark_handle_plugins(kshark_ctx, KSHARK_PLUGIN_CLOSE);
+
+	for (auto const &p: fileNames)
+		registerPlugin(p);
+
+	kshark_handle_plugins(kshark_ctx, KSHARK_PLUGIN_INIT);
+
+	emit dataReload();
+}
+
 /** Unload all plugins. */
 void KsPluginManager::unloadAll()
 {
diff --git a/kernel-shark/src/KsUtils.hpp b/kernel-shark/src/KsUtils.hpp
index cb95b4f..c8b5e88 100644
--- a/kernel-shark/src/KsUtils.hpp
+++ b/kernel-shark/src/KsUtils.hpp
@@ -210,6 +210,9 @@ public:
 
 	void registerPlugin(const QString &plugin);
 	void unregisterPlugin(const QString &plugin);
+
+	void addPlugins(const QStringList &fileNames);
+
 	void unloadAll();
 
 	void updatePlugins(QVector<int> pluginId);
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/4] kernel-shark: Add dialog for user-defined plugins to the Tools menu
  2019-03-13 15:07 [PATCH v2 0/4] Add dialog for loading user-defined plugins Yordan Karadzhov
  2019-03-13 15:07 ` [PATCH v2 1/4] kernel-shark: Define addPlugins method for KsPluginManager Yordan Karadzhov
@ 2019-03-13 15:07 ` Yordan Karadzhov
  2019-03-13 15:07 ` [PATCH v2 3/4] kernel-shark: Rename the manu action for managing registered plugins Yordan Karadzhov
  2019-03-13 15:07 ` [PATCH v2 4/4] kernel-shark: Add icons for "Add plugins" and "Manage plugins" Yordan Karadzhov
  3 siblings, 0 replies; 6+ messages in thread
From: Yordan Karadzhov @ 2019-03-13 15:07 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, Yordan Karadzhov

The dialog allows the user to find and load the plugin's
lobrary (.so file).

Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsMainWindow.cpp | 22 ++++++++++++++++++++++
 kernel-shark/src/KsMainWindow.hpp |  4 ++++
 2 files changed, 26 insertions(+)

diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
index 362b955..6428d4d 100644
--- a/kernel-shark/src/KsMainWindow.cpp
+++ b/kernel-shark/src/KsMainWindow.cpp
@@ -59,6 +59,7 @@ KsMainWindow::KsMainWindow(QWidget *parent)
   _cpuSelectAction("CPUs", this),
   _taskSelectAction("Tasks", this),
   _pluginsAction("Plugins", this),
+  _addPluginsAction("Add plugins", this),
   _captureAction("Record", this),
   _colorAction(this),
   _colSlider(this),
@@ -233,6 +234,11 @@ void KsMainWindow::_createActions()
 	connect(&_pluginsAction,	&QAction::triggered,
 		this,			&KsMainWindow::_pluginSelect);
 
+	_addPluginsAction.setStatusTip("Add plugins");
+
+	connect(&_addPluginsAction,	&QAction::triggered,
+		this,			&KsMainWindow::_pluginAdd);
+
 	_captureAction.setIcon(QIcon::fromTheme("media-record"));
 	_captureAction.setShortcut(tr("Ctrl+R"));
 	_captureAction.setStatusTip("Capture trace data");
@@ -336,6 +342,7 @@ void KsMainWindow::_createMenus()
 	/* Tools menu */
 	tools = menuBar()->addMenu("Tools");
 	tools->addAction(&_pluginsAction);
+	tools->addAction(&_addPluginsAction);
 	tools->addAction(&_captureAction);
 	tools->addSeparator();
 	tools->addAction(&_colorAction);
@@ -796,6 +803,21 @@ void KsMainWindow::_pluginSelect()
 	dialog->show();
 }
 
+void KsMainWindow::_pluginAdd()
+{
+	QStringList fileNames;
+
+	fileNames =
+		QFileDialog::getOpenFileNames(this, "Add KernelShark plugins",
+					      KS_DIR,
+					      "KernelShark Plugins (*.so);;");
+
+	if (fileNames.isEmpty())
+		return;
+
+	_plugins.addPlugins(fileNames);
+}
+
 void KsMainWindow::_record()
 {
 #ifndef DO_AS_ROOT
diff --git a/kernel-shark/src/KsMainWindow.hpp b/kernel-shark/src/KsMainWindow.hpp
index 969b603..1e6d619 100644
--- a/kernel-shark/src/KsMainWindow.hpp
+++ b/kernel-shark/src/KsMainWindow.hpp
@@ -132,6 +132,8 @@ private:
 	// Tools menu.
 	QAction		_pluginsAction;
 
+	QAction		_addPluginsAction;
+
 	QAction		_captureAction;
 
 	QWidgetAction	_colorAction;
@@ -185,6 +187,8 @@ private:
 
 	void _pluginSelect();
 
+	void _pluginAdd();
+
 	void _record();
 
 	void _setColorPhase(int);
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/4] kernel-shark: Rename the manu action for managing registered plugins
  2019-03-13 15:07 [PATCH v2 0/4] Add dialog for loading user-defined plugins Yordan Karadzhov
  2019-03-13 15:07 ` [PATCH v2 1/4] kernel-shark: Define addPlugins method for KsPluginManager Yordan Karadzhov
  2019-03-13 15:07 ` [PATCH v2 2/4] kernel-shark: Add dialog for user-defined plugins to the Tools menu Yordan Karadzhov
@ 2019-03-13 15:07 ` Yordan Karadzhov
  2019-03-15  9:49   ` Slavomir Kaslev
  2019-03-13 15:07 ` [PATCH v2 4/4] kernel-shark: Add icons for "Add plugins" and "Manage plugins" Yordan Karadzhov
  3 siblings, 1 reply; 6+ messages in thread
From: Yordan Karadzhov @ 2019-03-13 15:07 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, Yordan Karadzhov

The menu action in Tools that is used to manage all registered
plugins is renamed in order to avoid confusion with the "Add plugins"
menu action, implemented in the previous patch.

Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsMainWindow.cpp | 10 +++++-----
 kernel-shark/src/KsMainWindow.hpp |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
index 6428d4d..f165797 100644
--- a/kernel-shark/src/KsMainWindow.cpp
+++ b/kernel-shark/src/KsMainWindow.cpp
@@ -58,7 +58,7 @@ KsMainWindow::KsMainWindow(QWidget *parent)
   _clearAllFilters("Clear all filters", this),
   _cpuSelectAction("CPUs", this),
   _taskSelectAction("Tasks", this),
-  _pluginsAction("Plugins", this),
+  _managePluginsAction("Manage plugins", this),
   _addPluginsAction("Add plugins", this),
   _captureAction("Record", this),
   _colorAction(this),
@@ -228,10 +228,10 @@ void KsMainWindow::_createActions()
 		this,			&KsMainWindow::_taskSelect);
 
 	/* Tools menu */
-	_pluginsAction.setShortcut(tr("Ctrl+P"));
-	_pluginsAction.setStatusTip("Manage plugins");
+	_managePluginsAction.setShortcut(tr("Ctrl+P"));
+	_managePluginsAction.setStatusTip("Manage plugins");
 
-	connect(&_pluginsAction,	&QAction::triggered,
+	connect(&_managePluginsAction,	&QAction::triggered,
 		this,			&KsMainWindow::_pluginSelect);
 
 	_addPluginsAction.setStatusTip("Add plugins");
@@ -341,7 +341,7 @@ void KsMainWindow::_createMenus()
 
 	/* Tools menu */
 	tools = menuBar()->addMenu("Tools");
-	tools->addAction(&_pluginsAction);
+	tools->addAction(&_managePluginsAction);
 	tools->addAction(&_addPluginsAction);
 	tools->addAction(&_captureAction);
 	tools->addSeparator();
diff --git a/kernel-shark/src/KsMainWindow.hpp b/kernel-shark/src/KsMainWindow.hpp
index 1e6d619..a93382a 100644
--- a/kernel-shark/src/KsMainWindow.hpp
+++ b/kernel-shark/src/KsMainWindow.hpp
@@ -130,7 +130,7 @@ private:
 	QAction		_taskSelectAction;
 
 	// Tools menu.
-	QAction		_pluginsAction;
+	QAction		_managePluginsAction;
 
 	QAction		_addPluginsAction;
 
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 4/4] kernel-shark: Add icons for "Add plugins" and "Manage plugins"
  2019-03-13 15:07 [PATCH v2 0/4] Add dialog for loading user-defined plugins Yordan Karadzhov
                   ` (2 preceding siblings ...)
  2019-03-13 15:07 ` [PATCH v2 3/4] kernel-shark: Rename the manu action for managing registered plugins Yordan Karadzhov
@ 2019-03-13 15:07 ` Yordan Karadzhov
  3 siblings, 0 replies; 6+ messages in thread
From: Yordan Karadzhov @ 2019-03-13 15:07 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, Yordan Karadzhov

Just a small cosmetic improvement.

Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsMainWindow.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
index f165797..8ac19a7 100644
--- a/kernel-shark/src/KsMainWindow.cpp
+++ b/kernel-shark/src/KsMainWindow.cpp
@@ -229,11 +229,13 @@ void KsMainWindow::_createActions()
 
 	/* Tools menu */
 	_managePluginsAction.setShortcut(tr("Ctrl+P"));
+	_managePluginsAction.setIcon(QIcon::fromTheme("preferences-system"));
 	_managePluginsAction.setStatusTip("Manage plugins");
 
 	connect(&_managePluginsAction,	&QAction::triggered,
 		this,			&KsMainWindow::_pluginSelect);
 
+	_addPluginsAction.setIcon(QIcon::fromTheme("applications-engineering"));
 	_addPluginsAction.setStatusTip("Add plugins");
 
 	connect(&_addPluginsAction,	&QAction::triggered,
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 3/4] kernel-shark: Rename the manu action for managing registered plugins
  2019-03-13 15:07 ` [PATCH v2 3/4] kernel-shark: Rename the manu action for managing registered plugins Yordan Karadzhov
@ 2019-03-15  9:49   ` Slavomir Kaslev
  0 siblings, 0 replies; 6+ messages in thread
From: Slavomir Kaslev @ 2019-03-15  9:49 UTC (permalink / raw)
  To: Yordan Karadzhov; +Cc: Steven Rostedt, linux-trace-devel

On Wed, Mar 13, 2019 at 5:08 PM Yordan Karadzhov <ykaradzhov@vmware.com> wrote:
>
> The menu action in Tools that is used to manage all registered
> plugins is renamed in order to avoid confusion with the "Add plugins"
> menu action, implemented in the previous patch.
>
> Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
> ---
>  kernel-shark/src/KsMainWindow.cpp | 10 +++++-----
>  kernel-shark/src/KsMainWindow.hpp |  2 +-
>  2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
> index 6428d4d..f165797 100644
> --- a/kernel-shark/src/KsMainWindow.cpp
> +++ b/kernel-shark/src/KsMainWindow.cpp
> @@ -58,7 +58,7 @@ KsMainWindow::KsMainWindow(QWidget *parent)
>    _clearAllFilters("Clear all filters", this),
>    _cpuSelectAction("CPUs", this),
>    _taskSelectAction("Tasks", this),
> -  _pluginsAction("Plugins", this),
> +  _managePluginsAction("Manage plugins", this),
>    _addPluginsAction("Add plugins", this),
>    _captureAction("Record", this),
>    _colorAction(this),
> @@ -228,10 +228,10 @@ void KsMainWindow::_createActions()
>                 this,                   &KsMainWindow::_taskSelect);
>
>         /* Tools menu */
> -       _pluginsAction.setShortcut(tr("Ctrl+P"));
> -       _pluginsAction.setStatusTip("Manage plugins");
> +       _managePluginsAction.setShortcut(tr("Ctrl+P"));
> +       _managePluginsAction.setStatusTip("Manage plugins");
>
> -       connect(&_pluginsAction,        &QAction::triggered,
> +       connect(&_managePluginsAction,  &QAction::triggered,
>                 this,                   &KsMainWindow::_pluginSelect);
>
>         _addPluginsAction.setStatusTip("Add plugins");
> @@ -341,7 +341,7 @@ void KsMainWindow::_createMenus()
>
>         /* Tools menu */
>         tools = menuBar()->addMenu("Tools");
> -       tools->addAction(&_pluginsAction);
> +       tools->addAction(&_managePluginsAction);
>         tools->addAction(&_addPluginsAction);
>         tools->addAction(&_captureAction);
>         tools->addSeparator();
> diff --git a/kernel-shark/src/KsMainWindow.hpp b/kernel-shark/src/KsMainWindow.hpp
> index 1e6d619..a93382a 100644
> --- a/kernel-shark/src/KsMainWindow.hpp
> +++ b/kernel-shark/src/KsMainWindow.hpp
> @@ -130,7 +130,7 @@ private:
>         QAction         _taskSelectAction;
>
>         // Tools menu.
> -       QAction         _pluginsAction;
> +       QAction         _managePluginsAction;
>
>         QAction         _addPluginsAction;
>
> --
> 2.19.1
>

All 4 patches look good modulo a typo in this patch commit message
(:s/manu/menu/g)

Reviewed-by: Slavomir Kaslev <kaslevs@vmware.com>

Thanks!

-- 
Slavomir Kaslev

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-03-15  9:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-13 15:07 [PATCH v2 0/4] Add dialog for loading user-defined plugins Yordan Karadzhov
2019-03-13 15:07 ` [PATCH v2 1/4] kernel-shark: Define addPlugins method for KsPluginManager Yordan Karadzhov
2019-03-13 15:07 ` [PATCH v2 2/4] kernel-shark: Add dialog for user-defined plugins to the Tools menu Yordan Karadzhov
2019-03-13 15:07 ` [PATCH v2 3/4] kernel-shark: Rename the manu action for managing registered plugins Yordan Karadzhov
2019-03-15  9:49   ` Slavomir Kaslev
2019-03-13 15:07 ` [PATCH v2 4/4] kernel-shark: Add icons for "Add plugins" and "Manage plugins" Yordan Karadzhov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.