My answer here covers your question.
In practice, recent kernels are implementing a VDSO, notably to dynamically optimize system calls (the kernel sets the VDSO to some code best for the current processor). So you should use the VDSO, and you'll better use, for existing syscalls, the interface provided by the libc.
Notice that, AFAIK, a significant part of the cost of simple syscalls is going from user-space to kernel and back. Hence, for some syscalls (probably gettimeofday
, getpid
...) the VDSO might avoid even that (and technically might avoid doing a real syscall). For most syscalls (like open
, read
, send
, mmap
....) the kernel cost of the syscall is large enough to make any improvement of the user-space to kernel space transition (e.g. using SYSENTER
or SYSCALL
machine instructions instead of INT
) insignificant.
int 0x80
? Can you specify some files? – Mike Oct 9 '12 at 19:01