1 #pragma once
2 
3 #include <stdint.h>
4 
5 // 系统调用号
6 #define SYS_NOT_EXISTS 0
7 #define SYS_PUT_STRING 1
8 #define SYS_OPEN 2
9 #define SYS_CLOSE 3
10 #define SYS_READ 4
11 #define SYS_WRITE 5
12 #define SYS_LSEEK 6
13 #define SYS_FORK 7
14 #define SYS_VFORK 8
15 #define SYS_BRK 9
16 #define SYS_SBRK 10
17 
18 #define SYS_REBOOT 11    // 重启
19 #define SYS_CHDIR 12     // 切换工作目录
20 #define SYS_GET_DENTS 13 // 获取目录中的数据
21 #define SYS_EXECVE 14    // 执行新的应用程序
22 #define SYS_WAIT4 15     // 等待进程退出
23 #define SYS_EXIT 16      // 进程退出
24 #define SYS_MKDIR 17     // 创建文件夹
25 #define SYS_NANOSLEEP 18 // 纳秒级休眠
26 #define SYS_CLOCK 19     // 获取当前cpu时间
27 #define SYS_PIPE 20
28 
29 #define SYS_MSTAT 21        // 获取系统的内存状态信息
30 #define SYS_UNLINK_AT 22    // 删除文件夹/删除文件链接
31 #define SYS_KILL 23         // kill一个进程(向这个进程发出信号)
32 #define SYS_SIGACTION 24    // 设置进程的信号处理动作
33 #define SYS_RT_SIGRETURN 25 // 从信号处理函数返回
34 
35 /**
36  * @brief 用户态系统调用函数
37  *
38  * @param syscall_id
39  * @param arg0
40  * @param arg1
41  * @param arg2
42  * @param arg3
43  * @param arg4
44  * @param arg5
45  * @param arg6
46  * @param arg7
47  * @return long
48  */
49 long syscall_invoke(uint64_t syscall_id, uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4,
50                     uint64_t arg5, uint64_t arg6, uint64_t arg7);