syscall.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #pragma once
  2. #include <stdint.h>
  3. // 定义系统调用号
  4. #define SYS_READ 0
  5. #define SYS_WRITE 1
  6. #define SYS_OPEN 2
  7. #define SYS_CLOSE 3
  8. #define SYS_FSTAT 5
  9. #define SYS_LSEEK 8
  10. #define SYS_MMAP 9
  11. #define SYS_MPROTECT 10
  12. #define SYS_MUNMAP 11
  13. #define SYS_BRK 12
  14. #define SYS_SIGACTION 13
  15. #define SYS_RT_SIGRETURN 15
  16. #define SYS_IOCTL 16
  17. #define SYS_DUP 32
  18. #define SYS_DUP2 33
  19. #define SYS_NANOSLEEP 35
  20. #define SYS_GETPID 39
  21. #define SYS_SOCKET 41
  22. #define SYS_CONNECT 42
  23. #define SYS_ACCEPT 43
  24. #define SYS_SENDTO 44
  25. #define SYS_RECVFROM 45
  26. #define SYS_RECVMSG 47
  27. #define SYS_SHUTDOWN 48
  28. #define SYS_BIND 49
  29. #define SYS_LISTEN 50
  30. #define SYS_GETSOCKNAME 51
  31. #define SYS_GETPEERNAME 52
  32. #define SYS_SETSOCKOPT 54
  33. #define SYS_GETSOCKOPT 55
  34. #define SYS_CLONE 56
  35. #define SYS_FORK 57
  36. #define SYS_VFORK 58
  37. #define SYS_EXECVE 59
  38. #define SYS_EXIT 60
  39. #define SYS_WAIT4 61
  40. #define SYS_KILL 62
  41. #define SYS_FCNTL 72
  42. #define SYS_FTRUNCATE 77
  43. #define SYS_GET_DENTS 78
  44. #define SYS_GETCWD 79
  45. #define SYS_CHDIR 80
  46. #define SYS_MKDIR 83
  47. #define SYS_GETTIMEOFDAY 96
  48. #define SYS_ARCH_PRCTL 158
  49. #define SYS_REBOOT 169
  50. #define SYS_GETPPID 110
  51. #define SYS_GETPGID 121
  52. #define SYS_MKNOD 133
  53. #define SYS_FUTEX 202
  54. #define SYS_SET_TID_ADDR 218
  55. #define SYS_UNLINK_AT 263
  56. #define SYS_PIPE 293
  57. #define SYS_WRITEV 20
  58. // 与linux不一致的调用,在linux基础上累加
  59. #define SYS_PUT_STRING 100000
  60. #define SYS_SBRK 100001
  61. /// todo: 该系统调用与Linux不一致,将来需要删除该系统调用!!! 删的时候记得改C版本的libc
  62. #define SYS_CLOCK 100002
  63. #define SYS_SCHED 100003
  64. /**
  65. * @brief 用户态系统调用函数
  66. *
  67. * @param syscall_id
  68. * @param arg0
  69. * @param arg1
  70. * @param arg2
  71. * @param arg3
  72. * @param arg4
  73. * @param arg5
  74. * @return long
  75. */
  76. long syscall_invoke(uint64_t syscall_id, uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5);