在Linux系统中,系统调用在其内核中的入口函数名格式均为 sys_${func_name}
,例如 read
函数在内核中的入口函数名为 sys_read
。
而在内核中,其使用 include/linux/syscall.h
中如下的宏定义进行定义:
#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
在上述的 SYSCALL_DEFINE${n}
的格式中,最后跟随的参数 ${n}
表示该系统调用的参数个数。