diff options
Diffstat (limited to 'libpthread/nptl/sysdeps')
10 files changed, 101 insertions, 5 deletions
diff --git a/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h b/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h index 67cc96966..e882f13b2 100644 --- a/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h +++ b/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h @@ -27,4 +27,8 @@ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].__sp - (_adj)) /* We use the normal longjmp for unwinding. */ +#ifdef __UCLIBC__ +#define __libc_unwind_longjmp(buf, val) longjmp (buf, val) +#else #define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) +#endif diff --git a/libpthread/nptl/sysdeps/mips/tls.h b/libpthread/nptl/sysdeps/mips/tls.h index 3adfebccf..2a9dde161 100644 --- a/libpthread/nptl/sysdeps/mips/tls.h +++ b/libpthread/nptl/sysdeps/mips/tls.h @@ -61,7 +61,7 @@ typedef union dtv * NPTL - These defines would normally be handled by the top-level * configure script in glibc. */ -#ifdef __PTHREADS_NATIVE__ +#ifdef __UCLIBC__ #define HAVE_TLS_SUPPORT 1 #define HAVE_TLS_MODEL_ATTRIBUTE 1 #define HAVE___THREAD 1 @@ -84,6 +84,7 @@ typedef union dtv /* Get the thread descriptor definition. */ #ifdef __UCLIBC__ +# include <libc-symbols.h> # include <../../descr.h> #else # include <nptl/descr.h> diff --git a/libpthread/nptl/sysdeps/pthread/sigaction.c b/libpthread/nptl/sysdeps/pthread/sigaction.c index 4d36150a9..62f9daa3c 100644 --- a/libpthread/nptl/sysdeps/pthread/sigaction.c +++ b/libpthread/nptl/sysdeps/pthread/sigaction.c @@ -22,12 +22,21 @@ exact file anyway. */ #ifndef LIBC_SIGACTION +#include <features.h> + +#ifdef __UCLIBC__ +#include <errno.h> +#include <signal.h> +#include <pthreadP.h> +#else #include <nptl/pthreadP.h> +#endif /* We use the libc implementation but we tell it to not allow SIGCANCEL or SIGTIMER to be handled. */ # define LIBC_SIGACTION 1 +#ifndef __UCLIBC__ # include <nptl/sysdeps/pthread/sigaction.c> int @@ -35,6 +44,10 @@ __sigaction (sig, act, oact) int sig; const struct sigaction *act; struct sigaction *oact; +#else +int +__sigaction (int sig, const struct sigaction *act, struct sigaction *oact) +#endif { if (__builtin_expect (sig == SIGCANCEL || sig == SIGSETXID, 0)) { @@ -42,10 +55,16 @@ __sigaction (sig, act, oact) return -1; } +#ifdef __UCLIBC__ + return sigaction (sig, act, oact); +#else return __libc_sigaction (sig, act, oact); +#endif } libc_hidden_weak (__sigaction) +#ifndef __UCLIBC__ weak_alias (__sigaction, sigaction) +#endif #else diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c index 932e27300..8fdccac70 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c @@ -50,7 +50,11 @@ __lll_timedlock_wait (int *futex, const struct timespec *abstime) struct timespec rt; /* Get the current time. */ +#ifdef __UCLIBC__ + (void) gettimeofday (&tv, NULL); +#else (void) __gettimeofday (&tv, NULL); +#endif /* Compute relative timeout. */ rt.tv_sec = abstime->tv_sec - tv.tv_sec; @@ -105,7 +109,11 @@ __lll_timedwait_tid (int *tidp, const struct timespec *abstime) struct timespec rt; /* Get the current time. */ +#ifdef __UCLIBC__ + (void) gettimeofday (&tv, NULL); +#else (void) __gettimeofday (&tv, NULL); +#endif /* Compute relative timeout. */ rt.tv_sec = abstime->tv_sec - tv.tv_sec; diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/not-cancel.h b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/not-cancel.h index acf1a617e..f79953d88 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/not-cancel.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/not-cancel.h @@ -1 +1,54 @@ -#include "../i386/not-cancel.h" +/* Uncancelable versions of cancelable interfaces. Generic version. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* By default we have none. Map the name to the normal functions. */ +#define open_not_cancel(name, flags, mode) \ + __libc_open (name, flags, mode) +#ifdef __UCLIBC__ +extern int __libc_open(__const char *__file, int __oflag, ...) __THROW; +#define open_not_cancel_2(name, flags) \ + __libc_open (name, flags, 0) +#else +#define open_not_cancel_2(name, flags) \ + __libc_open (name, flags) +#endif +#define close_not_cancel(fd) \ + __close (fd) +#ifdef __UCLIBC__ +#define close_not_cancel_no_status(fd) \ + (void) close (fd) +#define read_not_cancel(fd, buf, n) \ + read (fd, buf, n) +#define write_not_cancel(fd, buf, n) \ + write (fd, buf, n) +#else +#define close_not_cancel_no_status(fd) \ + (void) __close (fd) +#define read_not_cancel(fd, buf, n) \ + __read (fd, buf, n) +#define write_not_cancel(fd, buf, n) \ + __write (fd, buf, n) +#endif +#define writev_not_cancel_no_status(fd, iov, n) \ + (void) __writev (fd, iov, n) +#define fcntl_not_cancel(fd, cmd, val) \ + __fcntl (fd, cmd, val) +# define waitpid_not_cancel(pid, stat_loc, options) \ + __waitpid (pid, stat_loc, options) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c index 1c92f314d..48d5a62a7 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c @@ -39,7 +39,8 @@ __pthread_attr_getaffinity_new (const pthread_attr_t *attr, size_t cpusetsize, { /* Check whether there are any bits set beyond the limits the user requested. */ - for (size_t cnt = cpusetsize; cnt < iattr->cpusetsize; ++cnt) + size_t cnt; + for (cnt = cpusetsize; cnt < iattr->cpusetsize; ++cnt) if (((char *) iattr->cpuset)[cnt] != 0) return EINVAL; diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c index ca84f1c9b..1842b275a 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c @@ -58,7 +58,8 @@ __pthread_attr_setaffinity_new (pthread_attr_t *attr, size_t cpusetsize, /* Check whether the new bitmask has any bit set beyond the last one the kernel accepts. */ - for (size_t cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt) + size_t cnt; + for (cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt) if (((char *) cpuset)[cnt] != '\0') /* Found a nonzero byte. This means the user request cannot be fulfilled. */ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c index 990db8741..9e1abd983 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c @@ -5,4 +5,8 @@ #define __pthread_mutex_lock __pthread_mutex_cond_lock #define NO_INCR +#ifdef __UCLIBC__ +#include <pthread_mutex_lock.c> +#else #include <nptl/pthread_mutex_lock.c> +#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c index 5b24c694a..01e21d3ce 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c @@ -71,7 +71,8 @@ __pthread_setaffinity_new (pthread_t th, size_t cpusetsize, /* We now know the size of the kernel cpumask_t. Make sure the user does not request to set a bit beyond that. */ - for (size_t cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt) + size_t cnt; + for (cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt) if (((char *) cpuset)[cnt] != '\0') /* Found a nonzero byte. This means the user request cannot be fulfilled. */ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c b/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c index ef897c1e9..d4ed1caba 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c @@ -56,7 +56,11 @@ sem_timedwait (sem_t *sem, const struct timespec *abstime) int sec, nsec; /* Get the current time. */ +#ifdef __UCLIBC__ + gettimeofday (&tv, NULL); +#else __gettimeofday (&tv, NULL); +#endif /* Compute relative timeout. */ sec = abstime->tv_sec - tv.tv_sec; |