feat(kernel/syscalls): add SYS_DEBUG_REPORT syscall

Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
EnderIce2 2025-03-26 23:25:16 +00:00
parent d69eb73a59
commit 2ce0e0ed79
Signed by: enderice2
GPG Key ID: FEB6B8A8507BA62E
2 changed files with 59 additions and 54 deletions

View File

@ -674,6 +674,8 @@ typedef enum
*/ */
SYS_API_VERSION = 0, SYS_API_VERSION = 0,
SYS_DEBUG_REPORT = 1,
/* I/O */ /* I/O */
/** /**

View File

@ -36,7 +36,7 @@ using Tasking::PCB;
using Tasking::TCB; using Tasking::TCB;
static int sys_api_version(SysFrm *Frame, int version) { return 0; } static int sys_api_version(SysFrm *Frame, int version) { return 0; }
static int sys_dummy(SysFrm *Frame) { return 0; } static int sys_debug_report(SysFrm *Frame) { return 0; }
static ssize_t sys_read(SysFrm *Frame, int fildes, void *buf, size_t nbyte) static ssize_t sys_read(SysFrm *Frame, int fildes, void *buf, size_t nbyte)
{ {
@ -264,74 +264,77 @@ static int sys_uname(SysFrm *Frame, struct kutsname *buf)
static SyscallData scTbl[SYS_MAX] = {}; static SyscallData scTbl[SYS_MAX] = {};
__constructor void __init_native_syscalls(void) __constructor void __init_native_syscalls(void)
{ {
#define init_syscall(name, func) \
scTbl[name] = {#name, (void *)func}
/* Initialization */ /* Initialization */
scTbl[SYS_API_VERSION] = {"SYS_API_VERSION", (void *)sys_api_version}; init_syscall(SYS_API_VERSION, sys_api_version);
scTbl[1] = {"dummy", (void *)sys_dummy}; init_syscall(SYS_DEBUG_REPORT, sys_debug_report);
/* I/O */ /* I/O */
scTbl[SYS_READ] = {"SYS_READ", (void *)sys_read}; init_syscall(SYS_READ, sys_read);
scTbl[SYS_PREAD] = {"SYS_PREAD", (void *)sys_pread}; init_syscall(SYS_PREAD, sys_pread);
scTbl[SYS_WRITE] = {"SYS_WRITE", (void *)sys_write}; init_syscall(SYS_WRITE, sys_write);
scTbl[SYS_PWRITE] = {"SYS_PWRITE", (void *)sys_pwrite}; init_syscall(SYS_PWRITE, sys_pwrite);
scTbl[SYS_OPEN] = {"SYS_OPEN", (void *)sys_open}; init_syscall(SYS_OPEN, sys_open);
scTbl[SYS_CLOSE] = {"SYS_CLOSE", (void *)sys_close}; init_syscall(SYS_CLOSE, sys_close);
scTbl[SYS_IOCTL] = {"SYS_IOCTL", (void *)sys_ioctl}; init_syscall(SYS_IOCTL, sys_ioctl);
scTbl[SYS_FCNTL] = {"SYS_FCNTL", (void *)sys_fcntl}; init_syscall(SYS_FCNTL, sys_fcntl);
/* File Status */ /* File Status */
scTbl[SYS_STAT] = {"SYS_STAT", (void *)sys_stat}; init_syscall(SYS_STAT, sys_stat);
scTbl[SYS_FSTAT] = {"SYS_FSTAT", (void *)sys_fstat}; init_syscall(SYS_FSTAT, sys_fstat);
scTbl[SYS_LSTAT] = {"SYS_LSTAT", (void *)sys_lstat}; init_syscall(SYS_LSTAT, sys_lstat);
scTbl[SYS_ACCESS] = {"SYS_ACCESS", (void *)sys_access}; init_syscall(SYS_ACCESS, sys_access);
scTbl[SYS_TRUNCATE] = {"SYS_TRUNCATE", (void *)sys_truncate}; init_syscall(SYS_TRUNCATE, sys_truncate);
scTbl[SYS_FTRUNCATE] = {"SYS_FTRUNCATE", (void *)sys_ftruncate}; init_syscall(SYS_FTRUNCATE, sys_ftruncate);
scTbl[SYS_TELL] = {"SYS_TELL", (void *)sys_tell}; init_syscall(SYS_TELL, sys_tell);
scTbl[SYS_SEEK] = {"SYS_SEEK", (void *)sys_seek}; init_syscall(SYS_SEEK, sys_seek);
/* Process Control */ /* Process Control */
scTbl[SYS_EXIT] = {"SYS_EXIT", (void *)sys_exit}; init_syscall(SYS_EXIT, sys_exit);
scTbl[SYS_FORK] = {"SYS_FORK", (void *)sys_fork}; init_syscall(SYS_FORK, sys_fork);
scTbl[SYS_EXECVE] = {"SYS_EXECVE", (void *)sys_execve}; init_syscall(SYS_EXECVE, sys_execve);
scTbl[SYS_GETPID] = {"SYS_GETPID", (void *)sys_getpid}; init_syscall(SYS_GETPID, sys_getpid);
scTbl[SYS_GETPPID] = {"SYS_GETPPID", (void *)sys_getppid}; init_syscall(SYS_GETPPID, sys_getppid);
scTbl[SYS_WAITPID] = {"SYS_WAITPID", (void *)sys_waitpid}; init_syscall(SYS_WAITPID, sys_waitpid);
scTbl[SYS_KILL] = {"SYS_KILL", (void *)sys_kill}; init_syscall(SYS_KILL, sys_kill);
scTbl[SYS_PRCTL] = {"SYS_PRCTL", (void *)sys_prctl}; init_syscall(SYS_PRCTL, sys_prctl);
/* Memory */ /* Memory */
scTbl[SYS_BRK] = {"SYS_BRK", (void *)sys_brk}; init_syscall(SYS_BRK, sys_brk);
scTbl[SYS_MMAP] = {"SYS_MMAP", (void *)sys_mmap}; init_syscall(SYS_MMAP, sys_mmap);
scTbl[SYS_MUNMAP] = {"SYS_MUNMAP", (void *)sys_munmap}; init_syscall(SYS_MUNMAP, sys_munmap);
scTbl[SYS_MPROTECT] = {"SYS_MPROTECT", (void *)sys_mprotect}; init_syscall(SYS_MPROTECT, sys_mprotect);
scTbl[SYS_MADVISE] = {"SYS_MADVISE", (void *)sys_madvise}; init_syscall(SYS_MADVISE, sys_madvise);
/* Communication */ /* Communication */
scTbl[SYS_PIPE] = {"SYS_PIPE", (void *)sys_pipe}; init_syscall(SYS_PIPE, sys_pipe);
scTbl[SYS_DUP] = {"SYS_DUP", (void *)sys_dup}; init_syscall(SYS_DUP, sys_dup);
scTbl[SYS_DUP2] = {"SYS_DUP2", (void *)sys_dup2}; init_syscall(SYS_DUP2, sys_dup2);
scTbl[SYS_SOCKET] = {"SYS_SOCKET", (void *)sys_socket}; init_syscall(SYS_SOCKET, sys_socket);
scTbl[SYS_BIND] = {"SYS_BIND", (void *)sys_bind}; init_syscall(SYS_BIND, sys_bind);
scTbl[SYS_CONNECT] = {"SYS_CONNECT", (void *)sys_connect}; init_syscall(SYS_CONNECT, sys_connect);
scTbl[SYS_LISTEN] = {"SYS_LISTEN", (void *)sys_listen}; init_syscall(SYS_LISTEN, sys_listen);
scTbl[SYS_ACCEPT] = {"SYS_ACCEPT", (void *)sys_accept}; init_syscall(SYS_ACCEPT, sys_accept);
scTbl[SYS_SEND] = {"SYS_SEND", (void *)sys_send}; init_syscall(SYS_SEND, sys_send);
scTbl[SYS_RECV] = {"SYS_RECV", (void *)sys_recv}; init_syscall(SYS_RECV, sys_recv);
scTbl[SYS_SHUTDOWN] = {"SYS_SHUTDOWN", (void *)sys_shutdown}; init_syscall(SYS_SHUTDOWN, sys_shutdown);
/* Time */ /* Time */
scTbl[SYS_TIME] = {"SYS_TIME", (void *)sys_time}; init_syscall(SYS_TIME, sys_time);
scTbl[SYS_CLOCK_GETTIME] = {"SYS_CLOCK_GETTIME", (void *)sys_clock_gettime}; init_syscall(SYS_CLOCK_GETTIME, sys_clock_gettime);
scTbl[SYS_CLOCK_SETTIME] = {"SYS_CLOCK_SETTIME", (void *)sys_clock_settime}; init_syscall(SYS_CLOCK_SETTIME, sys_clock_settime);
scTbl[SYS_NANOSLEEP] = {"SYS_NANOSLEEP", (void *)sys_nanosleep}; init_syscall(SYS_NANOSLEEP, sys_nanosleep);
/* Miscellaneous */ /* Miscellaneous */
scTbl[SYS_GETCWD] = {"SYS_GETCWD", (void *)sys_getcwd}; init_syscall(SYS_GETCWD, sys_getcwd);
scTbl[SYS_CHDIR] = {"SYS_CHDIR", (void *)sys_chdir}; init_syscall(SYS_CHDIR, sys_chdir);
scTbl[SYS_MKDIR] = {"SYS_MKDIR", (void *)sys_mkdir}; init_syscall(SYS_MKDIR, sys_mkdir);
scTbl[SYS_RMDIR] = {"SYS_RMDIR", (void *)sys_rmdir}; init_syscall(SYS_RMDIR, sys_rmdir);
scTbl[SYS_UNLINK] = {"SYS_UNLINK", (void *)sys_unlink}; init_syscall(SYS_UNLINK, sys_unlink);
scTbl[SYS_RENAME] = {"SYS_RENAME", (void *)sys_rename}; init_syscall(SYS_RENAME, sys_rename);
scTbl[SYS_UNAME] = {"SYS_UNAME", (void *)sys_uname}; init_syscall(SYS_UNAME, sys_uname);
} }
uintptr_t HandleNativeSyscalls(SysFrm *Frame) uintptr_t HandleNativeSyscalls(SysFrm *Frame)