Tips 1: 用户空间的方法xxx,对应系统调用层方法则是sys_xxx;
Tips 2: unistd.h文件记录着系统调用中断号的信息。
binonic
bionic/libc/kernel/uapi/asm-generic/unistd.h
bionic/libc/kernel/uapi/asm-arm64/asm/unistd.h
bionic/libc/arch-arm64/bionic/syscall.S
out/soong/.intermediates/bionic/libc/syscalls-arm.S
kernel
arch/arm64/include/asm/unistd32.h
arch/arm64/kernel/entry.S:947: bl el0_svc_compat_handler
arch/arm64/kernel/syscall.c:167:asmlinkage void el0_svc_compat_handler(struct pt_regs *regs)
故用户空间kill方法则对应系统调用层便是sys_kill,这个方法去哪里找呢?从/kernel/include/uapi/asm-generic/unistd.h等还有很多unistd.h去慢慢查看,查看关键字sys_kill,便能看到下面几行:
/* kernel/signal.c */
__SYSCALL(__NR_kill, sys_kill)
根据这个能得到一丝线索,那就是kill对应的方法sys_kill位于/kernel/signal.c文件。
Tips 3: 宏定义SYSCALL_DEFINEx(xxx,…),展开后对应的方法则是sys_xxx;
Tips 4: 方法参数的个数x,对应于SYSCALL_DEFINEx。