escrevendo uma API glibc para uma chamada de sistema [duplicata]
Duplicata Possível:
Precisa de ajuda com a fonte glibc?
Eu entendo como implementar nossas próprias chamadas de sistema no kernel do linux. Eu sei que podemos chamar isso desyscall()
ou com_asm()
em um programa c.
Mas eu quero entender como escrever o glibc api para esta nova chamada de sistema.
Comoopen()
eread()
A função glibc chama o mapeamento para a chamada do sistema no kernel ?.
char message[ ] = "Hello!\n";
int main( void )
{
write( 1, message, 7 );
exit( 0 );
}
Quando eu converto o programa acima em assembly ele está dando
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, em "call write" eu acho que escrever é chamada glibc aqui? o que acontece depois disso? como mapeia a chamada glibc para a chamada do sistema?