summaryrefslogtreecommitdiff
path: root/api/kjarna/interface.h
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2024-02-11 23:48:04 +0000
committerAda Christine <adachristine18@gmail.com>2024-02-11 23:48:04 +0000
commit3f9278b48ff4bc0d2cf1604034b3bba548572f04 (patch)
treedbdabed3ff580079d2e21045d2cbc5b274c2e418 /api/kjarna/interface.h
parent9fbfc6e951e565ef98c49c1dcfc4b6a39514f17d (diff)
kjarna initial impl
Diffstat (limited to 'api/kjarna/interface.h')
-rw-r--r--api/kjarna/interface.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/api/kjarna/interface.h b/api/kjarna/interface.h
new file mode 100644
index 0000000..e0c491a
--- /dev/null
+++ b/api/kjarna/interface.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include <stddef.h>
+#include <posix/sys/types.h>
+
+#define SYSV_ABI __attribute__((sysv_abi))
+
+struct kjarna_interface
+{
+ int (SYSV_ABI *open)(const char *, int, int);
+ int (SYSV_ABI *close)(int);
+ off_t (SYSV_ABI *lseek)(int, off_t, int);
+ ssize_t (SYSV_ABI *read)(int, void *, size_t);
+ ssize_t (SYSV_ABI *write)(int, const void *, size_t);
+
+ void *(SYSV_ABI *mmap)(void *, size_t, int, int, int, off_t);
+ int (SYSV_ABI *munmap)(void *, size_t);
+};
+
+struct kjarna_entry_params
+{
+ struct kjarna_interface *interface;
+ int argc;
+ char **argv;
+ char **envp;
+};
+
+typedef int (SYSV_ABI kjarna_runtime_entry_func)(struct kjarna_entry_params *);
+