|
@@ -9,19 +9,16 @@
|
|
|
|
|
|
#include <sys/syscall.h>
|
|
|
#include <unistd.h>
|
|
|
+#include <cancel.h>
|
|
|
|
|
|
#ifdef __NR_lseek
|
|
|
-_syscall3(__off_t, lseek, int, fildes, __off_t, offset, int, whence)
|
|
|
-#elif defined __UCLIBC_HAS_LFS__ && defined __NR__llseek
|
|
|
-__off_t lseek(int fildes, __off_t offset, int whence)
|
|
|
-{
|
|
|
- return lseek64(fildes, offset, whence);
|
|
|
-}
|
|
|
+# define __NR___lseek_nocancel __NR_lseek
|
|
|
+_syscall3(off_t, __NC(lseek), int, fd, off_t, offset, int, whence)
|
|
|
#else
|
|
|
# include <errno.h>
|
|
|
-__off_t lseek(int fildes, __off_t offset attribute_unused, int whence)
|
|
|
+off_t __NC(lseek)(int fd, off_t offset attribute_unused, int whence)
|
|
|
{
|
|
|
- if (fildes < 0) {
|
|
|
+ if (fd < 0) {
|
|
|
__set_errno(EBADF);
|
|
|
return -1;
|
|
|
}
|
|
@@ -40,9 +37,10 @@ __off_t lseek(int fildes, __off_t offset attribute_unused, int whence)
|
|
|
return -1;
|
|
|
}
|
|
|
#endif
|
|
|
-#ifndef __LINUXTHREADS_OLD__
|
|
|
-libc_hidden_def(lseek)
|
|
|
-#else
|
|
|
-libc_hidden_weak(lseek)
|
|
|
-strong_alias(lseek,__libc_lseek)
|
|
|
+CANCELLABLE_SYSCALL(off_t, lseek, (int fd, off_t offset, int whence), (fd, offset, whence))
|
|
|
+lt_libc_hidden(lseek)
|
|
|
+#if defined __UCLIBC_HAS_LFS__ && (__WORDSIZE == 64 || !defined __NR__llseek)
|
|
|
+strong_alias_untyped(__NC(lseek),__NC(lseek64))
|
|
|
+strong_alias_untyped(lseek,lseek64)
|
|
|
+lt_libc_hidden(lseek64)
|
|
|
#endif
|