aboutgitcodelistschat:MatrixIRC
path: root/cooker/gluten.c
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2023-03-20 07:54:51 +0100
committerStefano Brivio <sbrivio@redhat.com>2023-03-20 07:54:51 +0100
commitcbc17d2fcafe2e432f704d2dd2e0ff5c85118356 (patch)
treed52fd0269e474a2face81f6044293d1536aa8d0d /cooker/gluten.c
parentac8209922a79de4d6108128244c9133f5591fd8b (diff)
downloadseitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.gz
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.bz2
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.lz
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.xz
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.zst
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.zip
cooker: Initial import of new implementation
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'cooker/gluten.c')
-rw-r--r--cooker/gluten.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/cooker/gluten.c b/cooker/gluten.c
new file mode 100644
index 0000000..1116e6b
--- /dev/null
+++ b/cooker/gluten.c
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+/* seitan - Syscall Expressive Interpreter, Transformer and Notifier
+ *
+ * cooker/gluten.c - gluten (bytecode) file and layout functions
+ *
+ * Copyright 2023 Red Hat GmbH
+ * Author: Stefano Brivio <sbrivio@redhat.com>
+ */
+
+#include "cooker.h"
+#include "gluten.h"
+#include "util.h"
+
+#define GLUTEN_INST_SIZE BUFSIZ
+#define GLUTEN_DATA_SIZE BUFSIZ
+
+static char gluten[GLUTEN_INST_SIZE + GLUTEN_DATA_SIZE];
+
+static size_t gluten_arg_storage[ARG_TYPE_COUNT] = {
+ [ARG_INT] = sizeof(int),
+ [ARG_INTMASK] = sizeof(int),
+};
+
+int gluten_alloc(struct gluten_ctx *g, size_t size)
+{
+ debug(" allocating %lu at offset %i", size, g->sp);
+ if ((g->sp += size) >= GLUTEN_DATA_SIZE)
+ die("Temporary data size exceeded");
+
+ return g->sp - size;
+}
+
+int gluten_alloc_type(struct gluten_ctx *g, enum arg_type type)
+{
+ return gluten_alloc(g, gluten_arg_storage[type]);
+}
+
+int gluten_init(struct gluten_ctx *g)
+{
+ g->gluten = gluten;
+
+ return 0;
+}