aboutsummaryrefslogtreecommitdiff
path: root/examples/kaas
diff options
context:
space:
mode:
Diffstat (limited to 'examples/kaas')
-rw-r--r--examples/kaas/Makefile9
-rw-r--r--examples/kaas/kaas.c32
2 files changed, 41 insertions, 0 deletions
diff --git a/examples/kaas/Makefile b/examples/kaas/Makefile
new file mode 100644
index 0000000..e7d5154
--- /dev/null
+++ b/examples/kaas/Makefile
@@ -0,0 +1,9 @@
+.PHONY: all clean
+
+all: kaas.so
+
+clean:
+ rm -f kaas.so
+
+kaas.so: kaas.c
+ gcc -Wall -Wextra -fPIC -shared $< -o $@
diff --git a/examples/kaas/kaas.c b/examples/kaas/kaas.c
new file mode 100644
index 0000000..f823442
--- /dev/null
+++ b/examples/kaas/kaas.c
@@ -0,0 +1,32 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+__attribute__((constructor))
+void constr() {
+ printf("kaas: constructor!\n");
+}
+
+__attribute__((destructor))
+void destr() {
+ printf("kaas: destructor!\n");
+}
+
+int worker_init(int version) {
+ printf("kaas: initialised with version %d\n", version);
+ return 0;
+}
+
+int worker_run_job(size_t size, void *input_, size_t *outsize, void **outputp) {
+ const char *input = input_;
+ char *output = malloc(size);
+ for (size_t i = 0; i < size; i++) output[i] = toupper(input[i]);
+ *outsize = size;
+ *outputp = output;
+ return 0;
+}
+
+void worker_free_outdata(size_t size, void *data) {
+ (void)size;
+ free(data);
+}