summaryrefslogtreecommitdiff
path: root/include/user/user.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/user/user.h')
-rw-r--r--include/user/user.h48
1 files changed, 44 insertions, 4 deletions
diff --git a/include/user/user.h b/include/user/user.h
index 0be036b..7af8bdd 100644
--- a/include/user/user.h
+++ b/include/user/user.h
@@ -1,11 +1,47 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
- * Copyright (C) 2026 Richard QIn
+ * Copyright (C) 2026 Richard Qin
*/
#pragma once
+
typedef unsigned long long uint64;
-extern "C" {
+#define AT_FDCWD -100
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ // Raw Linux System Calls
+ int sys_openat(int dfd, const char *filename, int flags, int mode);
+ int sys_mknodat(int dfd, const char *filename, int mode, int dev);
+ int sys_mkdirat(int dfd, const char *path, int mode);
+ int sys_unlinkat(int dfd, const char *path, int flags);
+ int sys_linkat(int olddfd, const char *oldpath, int newdfd, const char *newpath, int flags);
+ int sys_chdir(const char *path);
+ int sys_dup(int oldfd);
+ int sys_fstat(int fd, void *statbuf);
+ int sys_read(int fd, void *buf, int count);
+ int sys_write(int fd, const void *buf, int count);
+ int sys_close(int fd);
+ int sys_pipe2(int pipefd[2], int flags);
+ int sys_clone(unsigned long flags, void *stack, int *ptid, void *tls, int *ctid);
+ int sys_execve(const char *path, char *const argv[], char *const envp[]);
+ int sys_wait4(int pid, int *status, int options, void *rusage);
+ int sys_exit(int status);
+ int sys_getpid();
+ int sys_brk(int n);
+ int sys_kill(int pid, int sig);
+ int sys_nanosleep(void *req, void *rem);
+ int sys_reboot(int magic1, int magic2, int cmd, void *arg);
+ int sys_lseek(int fd, int offset, int whence);
+
+ // Custom
+ void sys_putc(char c);
+ int sys_disk_test();
+
+ // POSIX Wrappers
int fork();
int exit(int status);
int wait(uint64 status_addr);
@@ -18,8 +54,8 @@ extern "C" {
int open(const char *, int);
int mknod(const char *, short, short);
int unlink(const char *);
- int fstat(int fd, void *st);
int link(const char *, const char *);
+ int fstat(int fd, void *st);
int mkdir(const char *);
int chdir(const char *);
int dup(int fd);
@@ -28,8 +64,12 @@ extern "C" {
int sleep(int ticks);
int uptime();
int shutdown();
+ int lseek(int fd, int offset, int whence);
// Debug
void putc(char c);
int disk_test();
-} \ No newline at end of file
+
+#ifdef __cplusplus
+}
+#endif \ No newline at end of file