kernel-shark-qt: Add plugin infrastructure to be used by the Qt-baset KS.

This patch adds infrastructure for loading/unloading of plugins. Each
plugin is coupled to a specific type of trace event and is allowed to
perform two types of actions.

The first action is executed once for each kshark_entry only at the time
when the data is loaded. This action can modify (even completely rewrite)
the content of the kshark_entrys generated from the trace events having
the type of the plugin.

The second action can add graphical elements on top of the existing graphs
generated by the Visualization model. This will become clear in the
following patches. This action is executed once for each graph and this is
happening every time when the Visualization model changes its state. It is
very powerful and can be used not only for drawing, but also for performing
arbitrary modifications on the data. The pointer to the model descriptor
object can access the entire array of kshark_entries, which, in turn, could
be used to modify those entries.

The plugin infrastructure of the Qt-baset KernelShark reuses the system
of macros for loading/unloading, implemented for the original GTK version.

This version of the patch contains number of improvements suggested by
Steven Rostedt. Thanks Steven!

Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
4 files changed