We implement a general purpose instruments, that can be used to implement efficient (fast) visualization plugins. We also use the new instrumentation to optimize the sched_events plugin. Changes in v2: * KS_DOUBLE_SIZE macro was simplified, based on the suggestion made by Steven in his review. A dedicated test case for the macro has been added. * Bug fix in kshark_free_data_container(). * Bug fix in kshark_data_container_append(). Yordan Karadzhov (VMware) (6): kernel-shark: Add KS_DOUBLE_SIZE macro kernel-shark: Add kshark_data_container to libkshark kernel-shark: Add KS_DEFINE_PLUGIN_CONTEXT macro kernel-shark: Start using C++17 kernel-shark: Add plotting methods to KsPlugins kernel-shark: Speed-up the sched_events plugin CMakeLists.txt | 8 +- src/CMakeLists.txt | 5 +- src/KsPlugins.cpp | 416 ++++++++++++++++++++++++++++++++++++ src/KsPlugins.hpp | 48 +++++ src/libkshark-plugin.h | 59 +++++ src/libkshark-tepdata.c | 34 +++ src/libkshark-tepdata.h | 7 + src/libkshark.c | 158 +++++++++++++- src/libkshark.h | 43 ++++ src/plugins/CMakeLists.txt | 11 +- src/plugins/SchedEvents.cpp | 310 +++++++-------------------- src/plugins/sched_events.c | 393 +++++++++++----------------------- src/plugins/sched_events.h | 50 ++--- tests/libkshark-tests.cpp | 89 ++++++++ 14 files changed, 1071 insertions(+), 560 deletions(-) create mode 100644 src/KsPlugins.cpp -- 2.25.1