我发现glibc在mmap.S中有mmap,代码如下:
...
movl 20(%esp), %ebx
cfi_rel_offset (ebx, 8)
movl 24(%esp), %ecx
movl 28(%esp), %edx
movl 32(%esp), %esi
cfi_rel_offset (esi, 4)
movl 36(%esp), %edi
cfi_rel_offset (edi, 0)
movl 40(%esp), %ebp
cfi_rel_offset (ebp, 12)
testl $0xfff, %ebp
movl $-EINVAL, %eax
jne L(skip)
shrl $12, %ebp /* mmap2 takes the offset in pages. */
movl $SYS_ify(mmap2), %eax /* System call number in %eax. */
ENTER_KERNEL /* Do the system call trap. */
...
似乎mmap2的真实部分在内核中。那么我在哪里可以找到它的源代码?
答案 0 :(得分:1)
你可以从这里开始挖掘:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/mm/mmap.c
按SYSCALL_
搜索定义。