From 57ce367309de9ac1b1938202156eac554420bb2a Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 4 Sep 2021 15:25:40 +0200 Subject: rename file descriptors to handles --- src/kernel/handle.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/kernel/handle.h (limited to 'src/kernel/handle.h') diff --git a/src/kernel/handle.h b/src/kernel/handle.h new file mode 100644 index 0000000..4b066ad --- /dev/null +++ b/src/kernel/handle.h @@ -0,0 +1,47 @@ +#pragma once +#include +#include + +#define HANDLE_MAX 16 + +typedef int handle_t; // TODO duplicated in syscalls.h + +enum handle_type { + HANDLE_EMPTY, + HANDLE_SPECIAL_TTY, +}; + +struct handle { + enum handle_type type; +}; + + +enum handleop { // describes the operations which can be done on handles + HANDLEOP_MOUNT, // also closes the original handle + HANDLEOP_OPEN, + + HANDLEOP_READ, + HANDLEOP_WRITE, + HANDLEOP_CLOSE, +}; + +struct handleop_args { + enum handleop type; + struct handle *handle; + union { + struct { // HANDLEOP_MOUNT + struct mount *target; + } mnt; + struct { // HANDLEOP_OPEN + struct handle *target; + const char *path; // relative to the mount point + size_t len; + } open; + struct { // HANDLEOP_READ, HANDLEOP_WRITE + user_ptr ptr; + size_t len; + } rw; + }; +}; + +int handleop_dispatch(struct handleop_args args); -- cgit v1.2.3