aboutsummaryrefslogtreecommitdiff
path: root/kernel/include/api/syscall.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include/api/syscall.h')
-rw-r--r--kernel/include/api/syscall.h196
1 files changed, 196 insertions, 0 deletions
diff --git a/kernel/include/api/syscall.h b/kernel/include/api/syscall.h
new file mode 100644
index 0000000..ea924c3
--- /dev/null
+++ b/kernel/include/api/syscall.h
@@ -0,0 +1,196 @@
+#pragma once
+
+/* Kernel and user header (via symlink) */
+
+#ifdef __KERNEL__
+#include "types.h"
+#else
+
+#include "sys/types.h"
+
+#endif
+
+/* Trap number for syscalls */
+#define INTR_SYSCALL 0x2e
+
+/* Keep all lists IN ORDER! */
+
+#define SYS_syscall 0
+#define SYS_exit 1
+#define SYS_fork 2
+#define SYS_read 3
+#define SYS_write 4
+#define SYS_open 5
+#define SYS_close 6
+#define SYS_waitpid 7
+#define SYS_link 8
+#define SYS_unlink 9
+#define SYS_execve 10
+#define SYS_chdir 11
+#define SYS_sleep 12 /* NYI */
+#define SYS_lseek 14
+#define SYS_sync 15
+#define SYS_nuke 16 /* NYI */
+#define SYS_dup 17
+#define SYS_pipe 18
+#define SYS_ioctl 19 /* NYI */
+#define SYS_rmdir 21
+#define SYS_mkdir 22
+#define SYS_getdents 23
+#define SYS_mmap 24
+#define SYS_mprotect 25 /* NYI */
+#define SYS_munmap 26
+#define SYS_rename 27 /* NYI */
+#define SYS_uname 28
+#define SYS_thr_create 29 /* NYI */
+#define SYS_thr_cancel 30
+#define SYS_thr_exit 31
+#define SYS_sched_yield 32
+#define SYS_thr_join 33 /* NYI */
+#define SYS_gettid 34 /* NYI */
+#define SYS_getpid 35
+#define SYS_errno 39
+#define SYS_halt 40
+#define SYS_get_free_mem 41 /* NYI */
+#define SYS_set_errno 42
+#define SYS_dup2 43
+#define SYS_brk 44
+#define SYS_mount 45
+#define SYS_umount 46
+#define SYS_stat 47
+#define SYS_time 48
+#define SYS_usleep 49
+
+/*
+ * ... what does the scouter say about his syscall?
+ * IT'S OVER 9000!
+ * WHAT?! 9000?!
+ */
+#define SYS_debug 9001
+#define SYS_kshell 9002
+
+struct regs;
+struct stat;
+
+typedef struct argstr
+{
+ const char *as_str;
+ size_t as_len; /* Not including null character */
+} argstr_t;
+
+typedef struct argvec
+{
+ argstr_t *av_vec;
+ size_t av_len; /* Not including null entry */
+} argvec_t;
+
+typedef struct waitpid_args
+{
+ pid_t wpa_pid;
+ int *wpa_status;
+ int wpa_options;
+} waitpid_args_t;
+
+typedef struct mmap_args
+{
+ void *mma_addr;
+ size_t mma_len;
+ int mma_prot;
+ int mma_flags;
+ int mma_fd;
+ off_t mma_off;
+} mmap_args_t;
+
+typedef struct munmap_args
+{
+ void *addr;
+ size_t len;
+} munmap_args_t;
+
+typedef struct open_args
+{
+ argstr_t filename;
+ int flags;
+ int mode;
+} open_args_t;
+
+typedef struct read_args
+{
+ int fd;
+ void *buf;
+ size_t nbytes;
+} read_args_t;
+
+typedef struct write_args
+{
+ int fd;
+ void *buf;
+ size_t nbytes;
+} write_args_t;
+
+typedef struct mkdir_args
+{
+ argstr_t path;
+ int mode;
+} mkdir_args_t;
+
+typedef struct link_args
+{
+ argstr_t to;
+ argstr_t from;
+} link_args_t;
+
+typedef struct execve_args
+{
+ argstr_t filename;
+ argvec_t argv;
+ argvec_t envp;
+} execve_args_t;
+
+typedef struct rename_args
+{
+ argstr_t oldpath;
+ argstr_t newpath;
+} rename_args_t;
+
+typedef struct getdents_args
+{
+ int fd;
+ struct dirent *dirp;
+ size_t count;
+} getdents_args_t;
+
+typedef struct lseek_args
+{
+ int fd;
+ off_t offset;
+ int whence;
+} lseek_args_t;
+
+typedef struct dup2_args
+{
+ int ofd;
+ int nfd;
+} dup2_args_t;
+
+#ifdef __MOUNTING__
+typedef struct mount_args
+{
+ argstr_t spec;
+ argstr_t dir;
+ argstr_t fstype;
+} mount_args_t;
+#endif
+
+typedef struct stat_args
+{
+ argstr_t path;
+ struct stat *buf;
+} stat_args_t;
+
+typedef struct usleep_args
+{
+ useconds_t usec;
+} usleep_args_t;
+
+struct utsname;