2015-11-09 6 views
0

я узнал, что Glibc имеет MMAP в mmap.S, и код выглядит следующим образом:Где я могу найти исходный код mmap (вызов systeml)?

... 
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

'Кажется, что реальная часть mmap2 находится в ядре.' - Да, системные вызовы реализуются ядром. Ядро Linux можно найти на kernel.org. – Tsyvarev

ответ

1

Вы можете начать копать отсюда:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/mm/mmap.c

поиск по SYSCALL_ Определяет.

+0

Итак, если бы я хотел отладить его, у меня должен был быть эмулятор типа Qemu? – liubenxi

+0

Да, 'qemu' - это тот, который им нужно сделать, также может помочь тривиальный' printk', или что-то вроде 'beaglebone' +' jtag' – fghj