From cbc17d2fcafe2e432f704d2dd2e0ff5c85118356 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Mon, 20 Mar 2023 07:54:51 +0100 Subject: cooker: Initial import of new implementation Signed-off-by: Stefano Brivio --- cooker/gluten.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 cooker/gluten.c (limited to 'cooker/gluten.c') 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 + */ + +#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; +} -- cgit v1.2.3