diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-04-14 22:47:15 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-04-14 22:47:15 +0800 |
| commit | ac9741e12222e72bad3414bc6f588e70a3d130cc (patch) | |
| tree | 6aace9f63a2ea54c7c3fd1e49e98ff81b638296f /include/user/user.h | |
| parent | 1e862099a13266da57ff7c6de11c1a11c42a8112 (diff) | |
| download | lume-ac9741e12222e72bad3414bc6f588e70a3d130cc.tar.gz lume-ac9741e12222e72bad3414bc6f588e70a3d130cc.tar.xz | |
feat: implement FDT-based memory discovery and add comprehensive debug logging to exec syscalls
Diffstat (limited to 'include/user/user.h')
| -rw-r--r-- | include/user/user.h | 48 |
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 |
