diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2023-03-20 07:54:51 +0100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2023-03-20 07:54:51 +0100 |
commit | cbc17d2fcafe2e432f704d2dd2e0ff5c85118356 (patch) | |
tree | d52fd0269e474a2face81f6044293d1536aa8d0d /cooker/gluten.c | |
parent | ac8209922a79de4d6108128244c9133f5591fd8b (diff) | |
download | seitan-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.c | 44 |
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; +} |