diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-04-14 21:18:57 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2009-04-14 21:18:57 +0000 |
commit | ded8b949ca91eae8bfcc9d3337913dda620416b3 (patch) | |
tree | b5d9f4c36dcce925adb8b4b64ffbfb5d4e1debfe /sysdeps/unix/sysv/linux/preadv.c | |
parent | 5cb5c2a33524f2332f107c4e78737086f57b0e0b (diff) | |
download | glibc-ded8b949ca91eae8bfcc9d3337913dda620416b3.tar glibc-ded8b949ca91eae8bfcc9d3337913dda620416b3.tar.gz glibc-ded8b949ca91eae8bfcc9d3337913dda620416b3.tar.bz2 glibc-ded8b949ca91eae8bfcc9d3337913dda620416b3.zip |
Updated to fedora-glibc-20090414T2104cvs/fedora-glibc-2_9_90-16
Diffstat (limited to 'sysdeps/unix/sysv/linux/preadv.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/preadv.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/preadv.c b/sysdeps/unix/sysv/linux/preadv.c index e2f8238596..0d4a6c3803 100644 --- a/sysdeps/unix/sysv/linux/preadv.c +++ b/sysdeps/unix/sysv/linux/preadv.c @@ -29,6 +29,7 @@ #include <sys/syscall.h> #include <kernel-features.h> + #ifndef PREADV # define PREADV preadv # define PREADV_REPLACEMENT __atomic_preadv_replacement @@ -36,8 +37,10 @@ # define OFF_T off_t #endif +#ifndef __ASSUME_PREADV static ssize_t PREADV_REPLACEMENT (int, __const struct iovec *, int, OFF_T) internal_function; +#endif ssize_t @@ -51,14 +54,16 @@ PREADV (fd, vector, count, offset) ssize_t result; if (SINGLE_THREAD_P) - result = INLINE_SYSCALL (preadv, 5, fd, vector, count, offset >> 32, - offset & 0xffffffff); + result = INLINE_SYSCALL (preadv, 5, fd, vector, count, + (off_t) ((off64_t) offset >> 32), + (off_t) (offset & 0xffffffff)); else { int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (preadv, 5, fd, vector, count, offset >> 32, - offset & 0xffffffff); + result = INLINE_SYSCALL (preadv, 5, fd, vector, count, + (off_t) ((off64_t) offset >> 32), + (off_t) (offset & 0xffffffff)); LIBC_CANCEL_RESET (oldtype); } |