diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-02-13 22:45:42 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-02-13 22:45:42 -0500 |
commit | 2cdfb7ca26f46f151afbc23d5d94fc68597137f5 (patch) | |
tree | 0baa2cd0776f2a44997950e0bc8ab646dc2067b2 /src/stdio/__stdio_seek.c | |
parent | 978ca016593077d27cc2a828f21c5e45e57074aa (diff) | |
download | musl-2cdfb7ca26f46f151afbc23d5d94fc68597137f5.tar.gz |
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
Diffstat (limited to 'src/stdio/__stdio_seek.c')
-rw-r--r-- | src/stdio/__stdio_seek.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/stdio/__stdio_seek.c b/src/stdio/__stdio_seek.c index fdb9fe7f..c7a5b730 100644 --- a/src/stdio/__stdio_seek.c +++ b/src/stdio/__stdio_seek.c @@ -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; |