diff options
author | Mike Frysinger <vapier@gentoo.org> | 2011-10-04 23:26:10 -0400 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2011-10-06 22:38:20 +0200 |
commit | 7eaca202b9f1f79a3c1d2a56a3879364cfa89e42 (patch) | |
tree | 3fb21d52c9ecc62a41500f7de2361d42ea93744f | |
parent | 767cb4f4f53712a8af2d7b3df8b0f0354e9749be (diff) |
ldso: unify pread syscall definition
A few arches want pread() defined, so move it to common code.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r-- | ldso/include/dl-syscall.h | 22 | ||||
-rw-r--r-- | ldso/ldso/bfin/dl-syscalls.h | 12 | ||||
-rw-r--r-- | ldso/ldso/c6x/dl-syscalls.h | 18 | ||||
-rw-r--r-- | ldso/ldso/frv/dl-syscalls.h | 18 |
4 files changed, 24 insertions, 46 deletions
diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h index 7539c2231..547dad1c8 100644 --- a/ldso/include/dl-syscall.h +++ b/ldso/include/dl-syscall.h @@ -108,6 +108,28 @@ static __always_inline _syscall0(gid_t, _dl_getpid) static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz) +#ifdef __NR_pread64 +#define __NR___syscall_pread __NR_pread64 +static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf, + size_t, count, off_t, offset_hi, off_t, offset_lo) + +static __always_inline ssize_t +_dl_pread(int fd, void *buf, size_t count, off_t offset) +{ + return __syscall_pread(fd, buf, count, offset, offset >> 31); +} +#elif defined __NR_pread +#define __NR___syscall_pread __NR_pread +static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf, + size_t, count, off_t, offset_hi, off_t, offset_lo) + +static __always_inline ssize_t +_dl_pread(int fd, void *buf, size_t count, off_t offset) +{ + return __syscall_pread(fd, buf, count, __LONG_LONG_PAIR(offset >> 31, offset)); +} +#endif + #ifdef __UCLIBC_HAS_SSP__ # include <sys/time.h> # define __NR__dl_gettimeofday __NR_gettimeofday diff --git a/ldso/ldso/bfin/dl-syscalls.h b/ldso/ldso/bfin/dl-syscalls.h index f9577ba85..29a451498 100644 --- a/ldso/ldso/bfin/dl-syscalls.h +++ b/ldso/ldso/bfin/dl-syscalls.h @@ -18,18 +18,6 @@ License along with uClibc; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef __NR_pread -#define __NR___syscall_pread __NR_pread -static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf, - size_t, count, off_t, offset_hi, off_t, offset_lo) - -static __always_inline ssize_t -_dl_pread(int fd, void *buf, size_t count, off_t offset) -{ - return(__syscall_pread(fd,buf,count,__LONG_LONG_PAIR (offset >> 31, offset))); -} -#endif - #ifdef __NR_sram_alloc #define __NR__dl_sram_alloc __NR_sram_alloc static __always_inline _syscall2(__ptr_t, _dl_sram_alloc, diff --git a/ldso/ldso/c6x/dl-syscalls.h b/ldso/ldso/c6x/dl-syscalls.h index 66d96abbd..f40c4fd31 100644 --- a/ldso/ldso/c6x/dl-syscalls.h +++ b/ldso/ldso/c6x/dl-syscalls.h @@ -1,17 +1 @@ -/* Copyright (C) 2010 Texas Instruments Incorporated - * Contributed by Mark Salter <msalter@redhat.com> - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#ifdef __NR_pread64 -#define __NR___syscall_pread __NR_pread64 -static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf, - size_t, count, off_t, offset_hi, off_t, offset_lo); - -static __always_inline ssize_t -_dl_pread(int fd, void *buf, size_t count, off_t offset) -{ - return(__syscall_pread(fd,buf,count, offset, offset >> 31)); -} -#endif +/* stub for arch-specific syscall issues */ diff --git a/ldso/ldso/frv/dl-syscalls.h b/ldso/ldso/frv/dl-syscalls.h index ce9435a03..f40c4fd31 100644 --- a/ldso/ldso/frv/dl-syscalls.h +++ b/ldso/ldso/frv/dl-syscalls.h @@ -1,17 +1 @@ -/* Copyright (C) 2003, 2004 Red Hat, Inc. - * Contributed by Alexandre Oliva <aoliva@redhat.com> - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#ifdef __NR_pread -#define __NR___syscall_pread __NR_pread -static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf, - size_t, count, off_t, offset_hi, off_t, offset_lo); - -static __always_inline ssize_t -_dl_pread(int fd, void *buf, size_t count, off_t offset) -{ - return(__syscall_pread(fd,buf,count,__LONG_LONG_PAIR (offset >> 31, offset))); -} -#endif +/* stub for arch-specific syscall issues */ |