All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: peter.maydell@linaro.org
Cc: "Matthias Weckbecker" <matthias@weckbecker.name>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	qemu-devel@nongnu.org
Subject: [PULL v2 02/15] plugins: new syscalls plugin
Date: Wed, 17 Mar 2021 07:22:03 +0000	[thread overview]
Message-ID: <20210317072216.16316-3-alex.bennee@linaro.org> (raw)
In-Reply-To: <20210317072216.16316-1-alex.bennee@linaro.org>

From: Matthias Weckbecker <matthias@weckbecker.name>

This commit adds a new syscalls plugin that displays the syscalls
as they are executed and returned. This plugin outputs the number
of the syscall as well as the syscall return value.

Works in *-user only.

Essentially, this commit restores:

  https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg00846.html

by using the new QEMU plugin API.

Signed-off-by: Matthias Weckbecker <matthias@weckbecker.name>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20200812115816.4454-1-matthias@weckbecker.name>
Message-Id: <20210312172821.31647-2-alex.bennee@linaro.org>

diff --git a/tests/plugin/syscall.c b/tests/plugin/syscall.c
new file mode 100644
index 0000000000..53ee2ab6c4
--- /dev/null
+++ b/tests/plugin/syscall.c
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2020, Matthias Weckbecker <matthias@weckbecker.name>
+ *
+ * License: GNU GPL, version 2 or later.
+ *   See the COPYING file in the top-level directory.
+ */
+#include <inttypes.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <glib.h>
+
+#include <qemu-plugin.h>
+
+QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
+
+static void vcpu_syscall(qemu_plugin_id_t id, unsigned int vcpu_index,
+                         int64_t num, uint64_t a1, uint64_t a2,
+                         uint64_t a3, uint64_t a4, uint64_t a5,
+                         uint64_t a6, uint64_t a7, uint64_t a8)
+{
+    g_autofree gchar *out = g_strdup_printf("syscall #%" PRIi64 "\n", num);
+    qemu_plugin_outs(out);
+}
+
+static void vcpu_syscall_ret(qemu_plugin_id_t id, unsigned int vcpu_idx,
+                             int64_t num, int64_t ret)
+{
+    g_autofree gchar *out;
+    out = g_strdup_printf("syscall #%" PRIi64 " returned -> %" PRIi64 "\n",
+            num, ret);
+    qemu_plugin_outs(out);
+}
+
+/* ************************************************************************* */
+
+static void plugin_exit(qemu_plugin_id_t id, void *p) {}
+
+QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
+                                           const qemu_info_t *info,
+                                           int argc, char **argv)
+{
+    qemu_plugin_register_vcpu_syscall_cb(id, vcpu_syscall);
+    qemu_plugin_register_vcpu_syscall_ret_cb(id, vcpu_syscall_ret);
+    qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
+    return 0;
+}
diff --git a/tests/plugin/meson.build b/tests/plugin/meson.build
index 1eacfa6e35..2bbfc4b19e 100644
--- a/tests/plugin/meson.build
+++ b/tests/plugin/meson.build
@@ -1,5 +1,5 @@
 t = []
-foreach i : ['bb', 'empty', 'insn', 'mem']
+foreach i : ['bb', 'empty', 'insn', 'mem', 'syscall']
   t += shared_module(i, files(i + '.c'),
                      include_directories: '../../include/qemu',
                      dependencies: glib)
-- 
2.20.1



  parent reply	other threads:[~2021-03-17  7:23 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-17  7:22 [PULL v2 00/15] misc fixes (strtoz, plugins, guest-loader) Alex Bennée
2021-03-17  7:22 ` [PULL v2 01/15] utils: Use fixed-point arithmetic in qemu_strtosz Alex Bennée
2021-03-17 11:53   ` Philippe Mathieu-Daudé
2021-03-17 12:13     ` Alex Bennée
2021-03-17 13:16       ` Philippe Mathieu-Daudé
2021-03-17 13:52         ` Eric Blake
2021-03-17 14:31         ` Alex Bennée
2021-03-17  7:22 ` Alex Bennée [this message]
2021-03-17  7:22 ` [PULL v2 03/15] plugins: Expose physical addresses instead of device offsets Alex Bennée
2021-03-17  7:22 ` [PULL v2 04/15] plugins: expand kernel-doc for qemu_info_t Alex Bennée
2021-03-17  7:22 ` [PULL v2 05/15] plugins: cleanup kernel-doc for qemu_plugin_install Alex Bennée
2021-03-17  7:22 ` [PULL v2 06/15] plugins: expand the callback typedef kernel-docs Alex Bennée
2021-03-17  7:22 ` [PULL v2 07/15] plugins: expand the typedef kernel-docs for translation Alex Bennée
2021-03-17  7:22 ` [PULL v2 08/15] plugins: add qemu_plugin_cb_flags to kernel-doc Alex Bennée
2021-03-17  7:22 ` [PULL v2 09/15] plugins: add qemu_plugin_id_t " Alex Bennée
2021-03-17  7:22 ` [PULL v2 10/15] plugins: expand inline exec kernel-doc documentation Alex Bennée
2021-03-17  7:22 ` [PULL v2 11/15] plugins: expand kernel-doc for instruction query and instrumentation Alex Bennée
2021-03-17  7:22 ` [PULL v2 12/15] plugins: expand kernel-doc for memory " Alex Bennée
2021-03-17  7:22 ` [PULL v2 13/15] plugins: getting qemu_plugin_get_hwaddr only expose one function prototype Alex Bennée
2021-03-17  7:22 ` [PULL v2 14/15] plugins: Fixes typo in qemu-plugin.h Alex Bennée
2021-03-17  7:22 ` [PULL v2 15/15] hw/core: Only build guest-loader if libfdt is available Alex Bennée
2021-03-17 12:10   ` Philippe Mathieu-Daudé
2021-03-18 17:10 ` [PULL v2 00/15] misc fixes (strtoz, plugins, guest-loader) Peter Maydell

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=20210317072216.16316-3-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=matthias@weckbecker.name \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.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 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.