Tôi thấy rất nhiều người tham khảo trực tuyến
arch/x86/entry/syscalls/syscall_64.tbl
đối với bảng tòa nhà, nó hoạt động tốt. Nhưng rất nhiều người khác tham khảo
/include/uapi/asm-generic/unistd.h
thường được tìm thấy trong gói tiêu đề. Làm thế nào đến syscall_64.tbl
chương trình,
0 common read sys_read
Câu trả lời đúng, và unistd.h
cho thấy,
#define __NR_io_setup 0
__SC_COMP(__NR_io_setup, sys_io_setup, compat_sys_io_setup)
Và sau đó nó hiển thị __NR_read
như
#define __NR_read 63
__SYSCALL(__NR_read, sys_read)
Tại sao lại là 63 chứ không phải 1? Làm thế nào để tôi có ý nghĩa ra khỏi /include/uapi/asm-generic/unistd.h
? Vẫn còn /usr/include/asm/
đó
/usr/include/asm/unistd_x32.h
#define __NR_read (__X32_SYSCALL_BIT + 0)
#define __NR_write (__X32_SYSCALL_BIT + 1)
#define __NR_open (__X32_SYSCALL_BIT + 2)
#define __NR_close (__X32_SYSCALL_BIT + 3)
#define __NR_stat (__X32_SYSCALL_BIT + 4)
/usr/include/asm/unistd_64.h
#define __NR_read 0
#define __NR_write 1
#define __NR_open 2
#define __NR_close 3
#define __NR_stat 4
/usr/include/asm/unistd_32.h
#define __NR_restart_syscall 0
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
Ai đó có thể cho tôi biết sự khác biệt giữa các unistd
tập tin này . Giải thích cách làm unistd.h
việc? Và phương pháp tốt nhất để tìm bảng tòa nhà là gì?