about summary refs log tree commit diff
path: root/src/stdio
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-02-13 22:45:42 -0500
committerRich Felker <dalias@aerifal.cx>2011-02-13 22:45:42 -0500
commit2cdfb7ca26f46f151afbc23d5d94fc68597137f5 (patch)
tree0baa2cd0776f2a44997950e0bc8ab646dc2067b2 /src/stdio
parent978ca016593077d27cc2a828f21c5e45e57074aa (diff)
downloadmusl-2cdfb7ca26f46f151afbc23d5d94fc68597137f5.tar.gz
musl-2cdfb7ca26f46f151afbc23d5d94fc68597137f5.tar.xz
musl-2cdfb7ca26f46f151afbc23d5d94fc68597137f5.zip
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')
-rw-r--r--src/stdio/__stdio_seek.c8
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;