cleaning up syscalls in preparation for x86_64 port

- hide all the legacy xxxxxx32 name cruft in syscall.h so the actual
source files can be clean and uniform across all archs.

- cleanup llseek/lseek and mmap2/mmap handling for 32/64 bit systems

- alternate implementation for nice if the target lacks nice syscall
This commit is contained in:
Rich Felker
2011-02-13 22:45:42 -05:00
parent 978ca01659
commit 2cdfb7ca26
18 changed files with 79 additions and 37 deletions

View File

@ -7,7 +7,13 @@ static off_t retneg1(FILE *f, off_t off, int whence)
off_t __stdio_seek(FILE *f, off_t off, int whence)
{
off_t ret = __syscall_lseek(f->fd, off, whence);
off_t ret;
#ifdef __NR__llseek
if (syscall5(__NR__llseek, f->fd, off>>32, off, (long)&ret, whence)<0)
ret = -1;
#else
ret = syscall3(__NR_lseek, f->fd, off, whence);
#endif
/* Detect unseekable files and optimize future failures out */
if (ret < 0 && off == 0 && whence == SEEK_CUR)
f->seek = retneg1;