From: "Yordan Karadzhov (VMware)" <y.karadz@gmail.com>
To: rostedt@goodmis.org
Cc: linux-trace-devel@vger.kernel.org,
"Yordan Karadzhov (VMware)" <y.karadz@gmail.com>
Subject: [PATCH v4 3/7] kernel-shark-qt: Add C++/C conversion for args of a plugin draw function.
Date: Wed, 19 Sep 2018 17:36:53 +0300 [thread overview]
Message-ID: <20180919143657.19472-4-y.karadz@gmail.com> (raw)
In-Reply-To: <20180919143657.19472-1-y.karadz@gmail.com>
The draw function of a plugin has a type declared in C. However, the
function needs to access some high level objects, defined in the C++
libraries. This patch adds instruments for converting the arguments
of the plugin's draw function from C++ to C and from C to C++.
Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
---
kernel-shark-qt/src/KsPlugins.hpp | 51 +++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
create mode 100644 kernel-shark-qt/src/KsPlugins.hpp
diff --git a/kernel-shark-qt/src/KsPlugins.hpp b/kernel-shark-qt/src/KsPlugins.hpp
new file mode 100644
index 0000000..3955cdf
--- /dev/null
+++ b/kernel-shark-qt/src/KsPlugins.hpp
@@ -0,0 +1,51 @@
+/* SPDX-License-Identifier: LGPL-2.1 */
+
+/*
+ * Copyright (C) 2018 VMware Inc, Yordan Karadzhov <y.karadz@gmail.com>
+ */
+
+/**
+ * @file KsPlugins.hpp
+ * @brief KernelShark C++ plugin declarations.
+ */
+
+#ifndef _KS_PLUGINS_H
+#define _KS_PLUGINS_H
+
+// KernelShark
+#include "libkshark-model.h"
+#include "KsPlotTools.hpp"
+
+/**
+ * Structure representing the vector of C++ arguments of the drawing function
+ * of a plugin.
+ */
+struct KsCppArgV {
+ /** Pointer to the model descriptor object. */
+ kshark_trace_histo *_histo;
+
+ /** Pointer to the graph object. */
+ KsPlot::Graph *_graph;
+
+ /**
+ * Pointer to the list of shapes. All shapes created by the plugin
+ * will be added to this list.
+ */
+ KsPlot::PlotObjList *_shapes;
+
+ /**
+ * Convert the "this" pointer of the C++ argument vector into a
+ * C pointer.
+ */
+ kshark_cpp_argv *toC()
+ {
+ return reinterpret_cast<kshark_cpp_argv *>(this);
+ }
+};
+
+/**
+ * Macro used to convert a C pointer into a pointer to KsCppArgV (C++ struct).
+ */
+#define KS_ARGV_TO_CPP(a) (reinterpret_cast<KsCppArgV *>(a))
+
+#endif
--
2.17.1
next prev parent reply other threads:[~2018-09-19 20:15 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-19 14:36 [PATCH v4 0/7] Add infrastructure for plugins Yordan Karadzhov (VMware)
2018-09-19 14:36 ` [PATCH v4 1/7] kernel-shark-qt: Add plugin infrastructure to be used by the Qt-baset KS Yordan Karadzhov (VMware)
2018-09-20 3:13 ` Steven Rostedt
2018-09-19 14:36 ` [PATCH v4 2/7] kernel-shark-qt: Add Plugin event handlers to session Yordan Karadzhov (VMware)
2018-09-20 3:24 ` Steven Rostedt
2018-09-20 13:26 ` Yordan Karadzhov (VMware)
2018-09-20 13:48 ` Steven Rostedt
2018-09-20 13:29 ` Yordan Karadzhov (VMware)
2018-09-20 13:49 ` Steven Rostedt
2018-09-19 14:36 ` Yordan Karadzhov (VMware) [this message]
2018-09-19 14:36 ` [PATCH v4 4/7] kernel-shark-qt: Make kshark_read_at() non-static Yordan Karadzhov (VMware)
2018-09-20 3:29 ` Steven Rostedt
2018-09-19 14:36 ` [PATCH v4 5/7] kernel-shark-qt: Add src/plugins dir. to hold the source code of the plugins Yordan Karadzhov (VMware)
2018-09-19 14:36 ` [PATCH v4 6/7] kernel-shark-qt: Tell Doxygen to enter ../src/plugins/ Yordan Karadzhov (VMware)
2018-09-19 14:36 ` [PATCH v4 7/7] kernel-shark-qt: Add a plugin for sched events Yordan Karadzhov (VMware)
2018-09-20 4:11 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180919143657.19472-4-y.karadz@gmail.com \
--to=y.karadz@gmail.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).