From 390aec5ca22e62d128e71d1dee312a2f0a82ab68 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Fri, 19 Aug 2022 19:44:36 +0200 Subject: syscall/fs_wait: return a handle for each request --- src/user/lib/compat.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/user/lib/compat.c (limited to 'src/user/lib/compat.c') diff --git a/src/user/lib/compat.c b/src/user/lib/compat.c new file mode 100644 index 0000000..cadc77f --- /dev/null +++ b/src/user/lib/compat.c @@ -0,0 +1,20 @@ +#include +#include +#include + +#define eprintf(fmt, ...) fprintf(stderr, "user/lib/compat: "fmt"\n" __VA_OPT__(,) __VA_ARGS__) + +static handle_t h = -1; +long c0_fs_wait(char *buf, long len, struct fs_wait_response *res) { + if (h != -1) { + eprintf("didn't respond to request!"); + c0_fs_respond(NULL, -1, 0); + } + h = _syscall_fs_wait(buf, len, res); + return h >= 0 ? 0 : -1; +} +long c0_fs_respond(void *buf, long ret, int flags) { + ret = _syscall_fs_respond(h, buf, ret, flags); + h = -1; + return ret; +} -- cgit v1.2.3