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?