pisanie gibc api dla wywołania systemowego [duplikat]
Możliwy duplikat:
Potrzebujesz pomocy ze źródłem glibc
Rozumiem, jak zaimplementować nasze własne wywołania systemowe w jądrze Linuksa. Wiem, że możemy to nazwaćsyscall()
lub z_asm()
w programie c.
Ale chcę zrozumieć, jak napisać glibc api dla tego nowego wywołania systemowego ?.
Jakopen()
iread()
wywołania funkcji glibc mapują do wywołania systemowego w jądrze ?.
char message[ ] = "Hello!\n";
int main( void )
{
write( 1, message, 7 );
exit( 0 );
}
Kiedy przekształcam powyższy program w zespół, daje
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $20, %esp
movl $7, 8(%esp)
movl $message, 4(%esp)
movl $1, (%esp)
call write
movl $0, (%esp)
call exit
.size main, .-main
.ident "GCC: (Debian 4.3.2-1.1) 4.3.2"
.section .note.GNU-stack,"",@progbits
~
3, W „call write” myślę, że pisanie jest tutaj wywołaniem glibc? co się stanie po tym? jak mapuje wywołanie glibc na wywołanie systemowe?