1616
1717#define PRAD_MAGIC 0xBADF00D
1818
19- #define LINUX_SYS_READ 0
20- #define LINUX_SYS_WRITE 1
21- #define LINUX_SYS_OPEN 2
22- #define LINUX_SYS_CLOSE 3
23- #define LINUX_SYS_STAT 4
24- #define LINUX_SYS_FSTAT 5
25- #define LINUX_SYS_LSEEK 8
26- #define LINUX_SYS_MPROTECT 10
27- #define LINUX_SYS_MMAP 9
28- #define LINUX_SYS_MUNMAP 11
29- #define LINUX_SYS_BRK 12
30- #define LINUX_SYS_RT_SIGACTION 13
31- #define LINUX_SYS_RT_SIGPROCMASK 14
32- #define LINUX_SYS_IOCTL 16
33- #define LINUX_SYS_ACCESS 21
34- #define LINUX_SYS_WRITEV 20
35- #define LINUX_SYS_DUP 32
36- #define LINUX_SYS_DUP2 33
37- #define LINUX_SYS_NANOSLEEP 35
38- #define LINUX_SYS_GETPID 39
39- #define LINUX_SYS_EXECVE 59
40- #define LINUX_SYS_EXIT 60
41- #define LINUX_SYS_CHDIR 80
42- #define LINUX_SYS_UNAME 63
43- #define LINUX_SYS_FCNTL 72
44- #define LINUX_SYS_GETCWD 79
45- #define LINUX_SYS_READLINK 89
46- #define LINUX_SYS_UMASK 95
47- #define LINUX_SYS_GETUID 102
48- #define LINUX_SYS_GETEUID 107
49- #define LINUX_SYS_GETGID 104
50- #define LINUX_SYS_GETEGID 108
51- #define LINUX_SYS_GETPPID 110
52- #define LINUX_SYS_SIGALTSTACK 131
53- #define LINUX_SYS_ARCH_PRCTL 158
54- #define LINUX_SYS_GETTID 186
55- #define LINUX_SYS_GETDENTS64 217
56- #define LINUX_SYS_SET_TID_ADDRESS 218
57- #define LINUX_SYS_CLOCK_GETTIME 228
58- #define LINUX_SYS_OPENAT 257
59- #define LINUX_SYS_NEWFSTATAT 262
60- #define LINUX_SYS_READLINKAT 267
61- #define LINUX_SYS_FACCESSAT 269
62- #define LINUX_SYS_SET_ROBUST_LIST 273
63- #define LINUX_SYS_PRLIMIT64 302
64- #define LINUX_SYS_GETRANDOM 318
65- #define LINUX_SYS_STATX 332
66- #define LINUX_SYS_EXIT_GROUP 231
67- #define LINUX_SYS_TGKILL 234
19+ #define LINUX_SYS_READ 0
20+ #define LINUX_SYS_WRITE 1
21+ #define LINUX_SYS_OPEN 2
22+ #define LINUX_SYS_CLOSE 3
23+ #define LINUX_SYS_STAT 4
24+ #define LINUX_SYS_FSTAT 5
25+ #define LINUX_SYS_LSEEK 8
26+ #define LINUX_SYS_MMAP 9
27+ #define LINUX_SYS_MPROTECT 10
28+ #define LINUX_SYS_MUNMAP 11
29+ #define LINUX_SYS_BRK 12
30+ #define LINUX_SYS_RT_SIGACTION 13
31+ #define LINUX_SYS_RT_SIGPROCMASK 14
32+ #define LINUX_SYS_IOCTL 16
33+ #define LINUX_SYS_ACCESS 21
34+ #define LINUX_SYS_WRITEV 20
35+ #define LINUX_SYS_DUP 32
36+ #define LINUX_SYS_DUP2 33
37+ #define LINUX_SYS_NANOSLEEP 35
38+ #define LINUX_SYS_GETPID 39
39+ #define LINUX_SYS_EXECVE 59
40+ #define LINUX_SYS_EXIT 60
41+ #define LINUX_SYS_CHDIR 80
42+ #define LINUX_SYS_UNAME 63
43+ #define LINUX_SYS_FCNTL 72
44+ #define LINUX_SYS_GETCWD 79
45+ #define LINUX_SYS_READLINK 89
46+ #define LINUX_SYS_UMASK 95
47+ #define LINUX_SYS_GETUID 102
48+ #define LINUX_SYS_GETEUID 107
49+ #define LINUX_SYS_GETGID 104
50+ #define LINUX_SYS_GETEGID 108
51+ #define LINUX_SYS_GETPPID 110
52+ #define LINUX_SYS_SIGALTSTACK 131
53+ #define LINUX_SYS_ARCH_PRCTL 158
54+ #define LINUX_SYS_GETTID 186
55+ #define LINUX_SYS_FUTEX 202
56+ #define LINUX_SYS_GETDENTS64 217
57+ #define LINUX_SYS_SET_TID_ADDRESS 218
58+ #define LINUX_SYS_CLOCK_GETTIME 228
59+ #define LINUX_SYS_OPENAT 257
60+ #define LINUX_SYS_NEWFSTATAT 262
61+ #define LINUX_SYS_READLINKAT 267
62+ #define LINUX_SYS_FACCESSAT 269
63+ #define LINUX_SYS_SET_ROBUST_LIST 273
64+ #define LINUX_SYS_PRLIMIT64 302
65+ #define LINUX_SYS_GETRANDOM 318
66+ #define LINUX_SYS_STATX 332
67+ #define LINUX_SYS_EXIT_GROUP 231
68+ #define LINUX_SYS_TGKILL 234
6869
6970#define LINUX_EAGAIN 11
70- #define LINUX_SYS_FUTEX 202 // confirm your syscall number
7171
7272typedef struct syscall_frame {
7373 uint64_t r9 ;
@@ -86,19 +86,36 @@ typedef struct syscall_frame {
8686} syscall_frame_t ;
8787
8888/**
89- * @brief Prefix for the syscalls
89+ * @brief Prefix for linux-compatible syscall traces.
9090 */
91- #define syscalls_prefix "Syscall Invoked : "
91+ #define linux_syscalls_prefix "Linux syscall : "
9292
9393/**
94- * @brief Prefix for linux-compatible syscall traces.
94+ * @brief Wrapper for the dispatcher which gets called for interrupt number 0x80
95+ *
96+ * @param frame
9597 */
96- #define linux_syscalls_prefix "Linux syscall: "
98+ void int80_handler ( InterruptFrame * frame );
9799
98- void invoke_syscall (int64 num );
99- void syscalls_handler (InterruptFrame * frame );
100- void syscall_handler_syscall (syscall_frame_t * f );
100+ /**
101+ * @brief Wrapper for the dispatcher which gets called for running the syscall instruction
102+ *
103+ * @param f
104+ */
105+ void syscall_handler (syscall_frame_t * f );
101106
107+ /**
108+ * @brief Dispatches syscall based on the syscall number.
109+ *
110+ * @param nr
111+ * @param arg1
112+ * @param arg2
113+ * @param arg3
114+ * @param arg4
115+ * @param arg5
116+ * @param arg6
117+ * @return uint64_t
118+ */
102119uint64_t syscall_dispatch (
103120 uint64_t nr ,
104121 uint64_t arg1 ,
0 commit comments