diff options
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/sysdeps/linux/common/__rt_sigtimedwait.c | 5 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/__syscall_fcntl.c | 9 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/__syscall_fcntl64.c | 7 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/syscalls-common.h | 6 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/ioctl.c | 7 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/open.c | 9 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/posix_fadvise64.c | 7 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/pselect.c | 9 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/sched_setaffinity.c | 9 | 
9 files changed, 44 insertions, 24 deletions
diff --git a/libc/sysdeps/linux/common/__rt_sigtimedwait.c b/libc/sysdeps/linux/common/__rt_sigtimedwait.c index 422a95201..9c74322ef 100644 --- a/libc/sysdeps/linux/common/__rt_sigtimedwait.c +++ b/libc/sysdeps/linux/common/__rt_sigtimedwait.c @@ -25,6 +25,9 @@  int __NC(sigtimedwait)(const sigset_t *set, siginfo_t *info,  		       const struct timespec *timeout)  { +# if defined SI_TKILL && defined SI_USER +	int result; +# endif  # ifdef SIGCANCEL  	sigset_t tmpset; @@ -50,7 +53,7 @@ int __NC(sigtimedwait)(const sigset_t *set, siginfo_t *info,  	/* XXX The size argument hopefully will have to be changed to the  	   real size of the user-level sigset_t.  */  	/* on uClibc we use the kernel sigset_t size */ -	int result = INLINE_SYSCALL(rt_sigtimedwait, 4, set, info, +	result = INLINE_SYSCALL(rt_sigtimedwait, 4, set, info,  				    timeout, __SYSCALL_SIGSET_T_SIZE);  	/* The kernel generates a SI_TKILL code in si_code in case tkill is diff --git a/libc/sysdeps/linux/common/__syscall_fcntl.c b/libc/sysdeps/linux/common/__syscall_fcntl.c index 17c67182e..86cc60d1a 100644 --- a/libc/sysdeps/linux/common/__syscall_fcntl.c +++ b/libc/sysdeps/linux/common/__syscall_fcntl.c @@ -39,6 +39,9 @@ int fcntl(int fd, int cmd, ...)  {  	va_list ap;  	long arg; +#ifdef __NEW_THREADS +	int oldtype, result; +#endif  	va_start (ap, cmd);  	arg = va_arg (ap, long); @@ -51,11 +54,11 @@ int fcntl(int fd, int cmd, ...)  		return INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);  #endif  #ifdef __NEW_THREADS -	int oldtype = LIBC_CANCEL_ASYNC (); +	oldtype = LIBC_CANCEL_ASYNC ();  #if defined __NR_fcntl -	int result = __NC(fcntl)(fd, cmd, arg); +	result = __NC(fcntl)(fd, cmd, arg);  #else -	int result = INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg); +	result = INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);  #endif  	LIBC_CANCEL_RESET (oldtype);  	return result; diff --git a/libc/sysdeps/linux/common/__syscall_fcntl64.c b/libc/sysdeps/linux/common/__syscall_fcntl64.c index eaef22b3b..88b2b143b 100644 --- a/libc/sysdeps/linux/common/__syscall_fcntl64.c +++ b/libc/sysdeps/linux/common/__syscall_fcntl64.c @@ -23,6 +23,9 @@ int fcntl64(int fd, int cmd, ...)  {  	long arg;  	va_list list; +# ifdef __NEW_THREADS +	int oldtype, result; +# endif  	va_start(list, cmd);  	arg = va_arg(list, long); @@ -31,8 +34,8 @@ int fcntl64(int fd, int cmd, ...)  	if (SINGLE_THREAD_P || (cmd != F_SETLKW64))  		return __NC(fcntl64)(fd, cmd, arg);  # ifdef __NEW_THREADS -	int oldtype = LIBC_CANCEL_ASYNC(); -	int result = __NC(fcntl64)(fd, cmd, arg); +	oldtype = LIBC_CANCEL_ASYNC(); +	result = __NC(fcntl64)(fd, cmd, arg);  	LIBC_CANCEL_RESET(oldtype);  	return result;  # endif diff --git a/libc/sysdeps/linux/common/bits/syscalls-common.h b/libc/sysdeps/linux/common/bits/syscalls-common.h index 86fe26c50..3665345a6 100644 --- a/libc/sysdeps/linux/common/bits/syscalls-common.h +++ b/libc/sysdeps/linux/common/bits/syscalls-common.h @@ -42,10 +42,11 @@  # define INLINE_SYSCALL_NCS(num, nr, args...)				\  (__extension__								\   ({									\ +	long __res;							\  	INTERNAL_SYSCALL_DECL(__err);					\  	(__extension__							\  	 ({								\ -	   long __res = INTERNAL_SYSCALL_NCS(num, __err, nr, args);	\ +	   __res = INTERNAL_SYSCALL_NCS(num, __err, nr, args);		\  	   if (unlikely(INTERNAL_SYSCALL_ERROR_P(__res, __err))) {	\  		__set_errno(INTERNAL_SYSCALL_ERRNO(__res, __err));	\  		__res = -1L;						\ @@ -59,8 +60,9 @@  #ifndef INLINE_SYSCALL_NOERR_NCS  # define INLINE_SYSCALL_NOERR_NCS(num, nr, args...)			\  ({									\ +	long __res;							\  	INTERNAL_SYSCALL_DECL(__err);					\ -	long __res = INTERNAL_SYSCALL_NCS(num, __err, nr, args);	\ +	__res = INTERNAL_SYSCALL_NCS(num, __err, nr, args);		\  	__res;								\  })  #endif diff --git a/libc/sysdeps/linux/common/ioctl.c b/libc/sysdeps/linux/common/ioctl.c index 9a00e614a..374b6247b 100644 --- a/libc/sysdeps/linux/common/ioctl.c +++ b/libc/sysdeps/linux/common/ioctl.c @@ -20,6 +20,9 @@ int ioctl(int fd, unsigned long int request, ...)  {  	void *arg;  	va_list list; +#ifdef __NEW_THREADS +	int oldtype, result; +#endif  	va_start(list, request);  	arg = va_arg(list, void *); @@ -28,8 +31,8 @@ int ioctl(int fd, unsigned long int request, ...)  	if (SINGLE_THREAD_P)  		return __syscall_ioctl(fd, request, arg);  #ifdef __NEW_THREADS -	int oldtype = LIBC_CANCEL_ASYNC (); -	int result = __syscall_ioctl(fd, request, arg); +	oldtype = LIBC_CANCEL_ASYNC (); +	result = __syscall_ioctl(fd, request, arg);  	LIBC_CANCEL_RESET (oldtype);  	return result;  #endif diff --git a/libc/sysdeps/linux/common/open.c b/libc/sysdeps/linux/common/open.c index fd37ea0f0..bfcb341de 100644 --- a/libc/sysdeps/linux/common/open.c +++ b/libc/sysdeps/linux/common/open.c @@ -28,6 +28,9 @@ int __open_nocancel(const char *, int, mode_t) __nonnull ((1)) attribute_hidden;  int open(const char *file, int oflag, ...)  {  	mode_t mode = 0; +#ifdef __NEW_THREADS +	int oldtype, result; +#endif  	if (oflag & O_CREAT) {  		va_list arg; @@ -44,11 +47,11 @@ int open(const char *file, int oflag, ...)  #endif  #ifdef __NEW_THREADS -	int oldtype = LIBC_CANCEL_ASYNC (); +	oldtype = LIBC_CANCEL_ASYNC ();  # if defined(__NR_open) -	int result = __NC(open)(file, oflag, mode); +	result = __NC(open)(file, oflag, mode);  # else -	int result = openat(AT_FDCWD, file, oflag, mode); +	result = openat(AT_FDCWD, file, oflag, mode);  # endif  	LIBC_CANCEL_RESET (oldtype);  	return result; diff --git a/libc/sysdeps/linux/common/posix_fadvise64.c b/libc/sysdeps/linux/common/posix_fadvise64.c index 37fb269ca..eb722ec20 100644 --- a/libc/sysdeps/linux/common/posix_fadvise64.c +++ b/libc/sysdeps/linux/common/posix_fadvise64.c @@ -22,22 +22,23 @@  int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice)  { +	int ret;  	INTERNAL_SYSCALL_DECL (err);  	/* ARM has always been funky. */  #if defined (__arm__) || \      (defined(__UCLIBC_SYSCALL_ALIGN_64BIT__) && (defined(__powerpc__) || defined(__xtensa__)))  	/* arch with 64-bit data in even reg alignment #1: [powerpc/xtensa]  	 * custom syscall handler (rearranges @advice to avoid register hole punch) */ -	int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice, +	ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice,  			OFF64_HI_LO (offset), OFF64_HI_LO (len));  #elif defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)  	/* arch with 64-bit data in even reg alignment #2: [arcv2/others-in-future]  	 * stock syscall handler in kernel (reg hole punched) */ -	int ret = INTERNAL_SYSCALL (fadvise64_64, err, 7, fd, 0, +	ret = INTERNAL_SYSCALL (fadvise64_64, err, 7, fd, 0,  			OFF64_HI_LO (offset), OFF64_HI_LO (len),  			advice);  # else -	int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, +	ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,  			OFF64_HI_LO (offset), OFF64_HI_LO (len),  			advice);  # endif diff --git a/libc/sysdeps/linux/common/pselect.c b/libc/sysdeps/linux/common/pselect.c index fbe85b780..bf2c08375 100644 --- a/libc/sysdeps/linux/common/pselect.c +++ b/libc/sysdeps/linux/common/pselect.c @@ -36,10 +36,6 @@ static int __NC(pselect)(int nfds, fd_set *readfds, fd_set *writefds,  	 */  	struct timespec _ts; -	if (timeout != NULL) { -		_ts = *timeout; -		timeout = &_ts; -	}  	/* Note: the system call expects 7 values but on most architectures  	   we can only pass in 6 directly.  If there is an architecture with  	   support for more parameters a new version of this file needs to @@ -49,6 +45,11 @@ static int __NC(pselect)(int nfds, fd_set *readfds, fd_set *writefds,  		__kernel_size_t  ss_len;  	} data; +	if (timeout != NULL) { +		_ts = *timeout; +		timeout = &_ts; +	} +  	if (sigmask != NULL) {  		data.ss = (__kernel_ulong_t) sigmask;  		data.ss_len = __SYSCALL_SIGSET_T_SIZE; diff --git a/libc/sysdeps/linux/common/sched_setaffinity.c b/libc/sysdeps/linux/common/sched_setaffinity.c index 927744ea5..3d513ef4b 100644 --- a/libc/sysdeps/linux/common/sched_setaffinity.c +++ b/libc/sysdeps/linux/common/sched_setaffinity.c @@ -32,12 +32,13 @@ static size_t __kernel_cpumask_size;  int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *cpuset)  {  	size_t cnt; +	int res; +	size_t psize = 128; +	void *p = alloca (psize); +  	if (unlikely (__kernel_cpumask_size == 0)) { -		INTERNAL_SYSCALL_DECL (err); -		int res; -		size_t psize = 128; -		void *p = alloca (psize); +		INTERNAL_SYSCALL_DECL (err);  		while (res = INTERNAL_SYSCALL (sched_getaffinity, err, 3, getpid (),  					       psize, p),  		       INTERNAL_SYSCALL_ERROR_P (res, err)  | 
