[Qemu-devel] [RFC PATCH v2 5/7] plugins: add plugin template

Pavel Dovgalyuk posted 7 patches 7 years, 4 months ago
[Qemu-devel] [RFC PATCH v2 5/7] plugins: add plugin template
Posted by Pavel Dovgalyuk 7 years, 4 months ago
From: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>

This is a template of the QEMU plugin. It includes empty functions that
plugins may implement.

Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
---
 plugins/template/Makefile   |   19 +++++++++++++++++++
 plugins/template/template.c |   19 +++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100644 plugins/template/Makefile
 create mode 100644 plugins/template/template.c

diff --git a/plugins/template/Makefile b/plugins/template/Makefile
new file mode 100644
index 0000000..b9d10da
--- /dev/null
+++ b/plugins/template/Makefile
@@ -0,0 +1,19 @@
+CFLAGS += -I../include -fno-PIE -fPIC -O3
+LDFLAGS += -shared
+# TODO: Windows
+DSOSUF := .so
+
+NAME:= template
+BIN := $(NAME)$(DSOSUF)
+
+FILES := template.o
+
+%.o: %.c
+	$(CC) -c -o $@ $< $(CFLAGS)
+
+all: $(FILES)
+	$(CC) $(LDFLAGS) -o $(BIN) $(FILES)
+
+clean:
+	rm $(FILES)
+	rm $(BIN)
diff --git a/plugins/template/template.c b/plugins/template/template.c
new file mode 100644
index 0000000..fed1053
--- /dev/null
+++ b/plugins/template/template.c
@@ -0,0 +1,19 @@
+#include <stdint.h>
+#include <stdio.h>
+#include "plugins.h"
+
+bool plugin_init(const char *args)
+{
+    printf("template plugin loaded successfully\n");
+    return true;
+}
+
+bool plugin_needs_before_insn(uint64_t pc, void *cpu)
+{
+    return true;
+}
+
+void plugin_before_insn(uint64_t pc, void *cpu)
+{
+    printf("executing instruction at %lx\n", pc);
+}


Re: [Qemu-devel] [RFC PATCH v2 5/7] plugins: add plugin template
Posted by Alex Bennée 7 years, 1 month ago
Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru> writes:

> From: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
>
> This is a template of the QEMU plugin. It includes empty functions that
> plugins may implement.
>

I'm not sure it's worth having a null-template plugin if we can have one
or two well documented example plugins. It just runs the risk of
bitrot....

> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
> ---
>  plugins/template/Makefile   |   19 +++++++++++++++++++
>  plugins/template/template.c |   19 +++++++++++++++++++
>  2 files changed, 38 insertions(+)
>  create mode 100644 plugins/template/Makefile
>  create mode 100644 plugins/template/template.c
>
> diff --git a/plugins/template/Makefile b/plugins/template/Makefile
> new file mode 100644
> index 0000000..b9d10da
> --- /dev/null
> +++ b/plugins/template/Makefile
> @@ -0,0 +1,19 @@
> +CFLAGS += -I../include -fno-PIE -fPIC -O3
> +LDFLAGS += -shared
> +# TODO: Windows
> +DSOSUF := .so
> +
> +NAME:= template
> +BIN := $(NAME)$(DSOSUF)
> +
> +FILES := template.o
> +
> +%.o: %.c
> +	$(CC) -c -o $@ $< $(CFLAGS)
> +
> +all: $(FILES)
> +	$(CC) $(LDFLAGS) -o $(BIN) $(FILES)
> +
> +clean:
> +	rm $(FILES)
> +	rm $(BIN)
> diff --git a/plugins/template/template.c b/plugins/template/template.c
> new file mode 100644
> index 0000000..fed1053
> --- /dev/null
> +++ b/plugins/template/template.c
> @@ -0,0 +1,19 @@
> +#include <stdint.h>
> +#include <stdio.h>
> +#include "plugins.h"
> +
> +bool plugin_init(const char *args)
> +{
> +    printf("template plugin loaded successfully\n");
> +    return true;
> +}
> +
> +bool plugin_needs_before_insn(uint64_t pc, void *cpu)
> +{
> +    return true;
> +}
> +
> +void plugin_before_insn(uint64_t pc, void *cpu)
> +{
> +    printf("executing instruction at %lx\n", pc);
> +}


--
Alex Bennée