Schreiben einer glibc-API für einen Systemaufruf [duplizieren]
Mögliche Duplikate:
Brauchen Sie Hilfe mit Glibc Source
Ich verstehe, wie wir unsere eigenen Systemaufrufe im Linux-Kernel implementieren. Ich weiß, wir können das mit nennensyscall()
oder mit_asm()
in einem c-Programm.
Aber ich möchte verstehen, wie man glibc-API für diesen neuen Systemaufruf schreibt.
Wie zumopen()
undread()
Die glibc-Funktion ruft die Zuordnung zum Systemaufruf im Kernel auf.
char message[ ] = "Hello!\n";
int main( void )
{
write( 1, message, 7 );
exit( 0 );
}
Wenn ich das obige Programm in Assembly konvertiere, gibt es
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, in "call write" denke ich schreibe ist hier glibc call? was passiert danach Wie ordnet es den glibc-Aufruf dem Systemaufruf zu?