overhaul syscall interface
authorRich Felker <dalias@aerifal.cx>
Sat, 19 Mar 2011 22:51:42 +0000 (18:51 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 19 Mar 2011 22:51:42 +0000 (18:51 -0400)
commitd00ff2950eacc375d57e44d65c7697f636c67625
tree33949c7eb7e75251b3a598f964db558604caf7c6
parent56fd65e861e0ad0ea7677211f8258a8f64233f26
overhaul syscall interface

this commit shuffles around the location of syscall definitions so
that we can make a syscall() library function with both SYS_* and
__NR_* style syscall names available to user applications, provides
the syscall() library function, and optimizes the code that performs
the actual inline syscalls in the library itself.

previously on i386 when built as PIC (shared library), syscalls were
incurring bus lock (lock prefix) overhead at entry and exit, due to
the way the ebx register was being loaded (xchg instruction with a
memory operand). now the xchg takes place between two registers.

further cleanup to arch/$(ARCH)/syscall.h is planned.
arch/i386/bits/syscall.h [new file with mode: 0644]
arch/i386/syscall.h
arch/x86_64/bits/syscall.h [new file with mode: 0644]
arch/x86_64/syscall.h
include/sys/syscall.h [new file with mode: 0644]
src/internal/i386/syscall.s [new file with mode: 0644]
src/internal/syscall.c
src/internal/syscall_ret.c [new file with mode: 0644]
src/internal/x86_64/syscall.s [new file with mode: 0644]
src/linux/syscall.c [new file with mode: 0644]
src/thread/pthread_create.c