diff options
| author | Carlos O'Donell <carlos@systemhalted.org> | 2015-02-05 21:33:03 -0500 |
|---|---|---|
| committer | Carlos O'Donell <carlos@systemhalted.org> | 2015-02-05 21:37:47 -0500 |
| commit | 3f823f488a4db8d048892af1a7ee992aab770e5a (patch) | |
| tree | c35bb819cad653780e3778de1bd2cc7c6ec29962 | |
| parent | 34c5604814cb97264aa2393800967b0b0e4585cd (diff) | |
| download | glibc-3f823f488a4db8d048892af1a7ee992aab770e5a.tar.xz glibc-3f823f488a4db8d048892af1a7ee992aab770e5a.zip | |
hppa: Remove warnings and fix conformance errors.
(1) Fix warnings.
This is a bulk update to fix all the warnings that were causing
build failures with -Werror on hppa.
The most egregious problems are in dl-fptr.c which needs to be
entirely rewritten, thus I've used -Wno-error for that.
(2) Fix conformance errors.
The sysdep.c file had __syscall_error and syscall in one file
which caused conformance issues by including syscall when
__syscall_error was linked to. The fix is obviously to split
the file and use syscall.c to implement syscall.
| -rw-r--r-- | ChangeLog | 20 | ||||
| -rw-r--r-- | sysdeps/hppa/Makefile | 2 | ||||
| -rw-r--r-- | sysdeps/hppa/bits/setjmp.h | 4 | ||||
| -rw-r--r-- | sysdeps/hppa/dl-irel.h | 3 | ||||
| -rw-r--r-- | sysdeps/hppa/entry.h | 5 | ||||
| -rw-r--r-- | sysdeps/hppa/fpu/fegetexcept.c | 2 | ||||
| -rw-r--r-- | sysdeps/hppa/fpu/ftestexcept.c | 2 | ||||
| -rw-r--r-- | sysdeps/hppa/sotruss-lib.c | 51 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/hppa/bits/atomic.h | 6 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/hppa/mmap.c | 2 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread.h | 1136 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/hppa/syscall.S | 18 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/hppa/syscall.c | 64 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/hppa/sysdep.c | 48 |
14 files changed, 151 insertions, 1212 deletions
@@ -1,3 +1,23 @@ +2015-02-05 Carlos O'Donell <carlos@systemhalted.org> + + * sysdeps/hppa/Makefile (CFLAGS-dl-fptr.c): Add -Wno-error. + * sysdeps/hppa/bits/setjmp.h: Union is named __jmp_buf_internal_tag. + * sysdeps/hppa/dl-irel.h: Remove #warning. + * sysdeps/hppa/entry.h: Provide prototype for + __canonicalize_funcptr_for_compare and cast argument. + * sysdeps/hppa/fpu/fegetexcept.c (fegetexcept): Add semicolon. + * sysdeps/hppa/fpu/ftestexcept.c (fetestexcept): Likewise. + * sysdeps/hppa/sotruss-lib.c: New file. + * sysdeps/unix/sysv/linux/hppa/bits/atomic.h + (atomic_compare_and_exchange_val_acq): Use __typeof__. + (atomic_compare_and_exchange_bool_acq): Likewise. + * sysdeps/unix/sysv/linux/hppa/mmap.c: Use weak alias. + * sysdeps/unix/sysv/linux/hppa/pthread.h: Include pthread.h. + + * sysdeps/unix/sysv/linux/hppa/syscall.S: Delete file. + * sysdeps/unix/sysv/linux/hppa/sysdep.c: Move syscall from here... + * sysdeps/unix/sysv/linux/hppa/syscall.c: ... to here. + 2015-02-05 Chung-Lin Tang <cltang@codesourcery.com> * sysdeps/nios2/machine-gmon.h (NIOS2_MCOUNT_CALL): Correct name of diff --git a/sysdeps/hppa/Makefile b/sysdeps/hppa/Makefile index 9e24349231..078f90a60c 100644 --- a/sysdeps/hppa/Makefile +++ b/sysdeps/hppa/Makefile @@ -24,6 +24,8 @@ LDFLAGS-c_pic.os += -Wl,--unique=.text* ifeq ($(subdir),elf) CFLAGS-rtld.c += -mdisable-fpregs sysdep-dl-routines += dl-symaddr dl-fptr +# dl-fptr.c needs a complete rewrite to fix ISO C aliasing violations. +CFLAGS-dl-fptr.c = -Wno-error sysdep_routines += $(sysdep-dl-routines) sysdep-rtld-routines += $(sysdep-dl-routines) endif diff --git a/sysdeps/hppa/bits/setjmp.h b/sysdeps/hppa/bits/setjmp.h index 7d85586c3c..3c04c0b447 100644 --- a/sysdeps/hppa/bits/setjmp.h +++ b/sysdeps/hppa/bits/setjmp.h @@ -38,9 +38,9 @@ * 10 x 64-bit fprs in this order: - fr12-fr21 (callee saves) Note: We have 8 bytes of free space for future uses. */ -typedef union +typedef union __jmp_buf_internal_tag { - struct __jmp_buf_internal_tag + struct { int __r3; int __pad0; diff --git a/sysdeps/hppa/dl-irel.h b/sysdeps/hppa/dl-irel.h index fc7bd0fb47..eb98d500e0 100644 --- a/sysdeps/hppa/dl-irel.h +++ b/sysdeps/hppa/dl-irel.h @@ -27,8 +27,7 @@ #define ELF_MACHINE_IREL 1 -/* Implement enough to get the build going again. */ -#warning "NEED STT_GNU_IFUNC IMPLEMENTATION" +/* There is no IFUNC implementation yet. Add stubs to allow builds. */ static inline struct fdesc __attribute ((always_inline)) diff --git a/sysdeps/hppa/entry.h b/sysdeps/hppa/entry.h index b024db2be7..5ea5b47448 100644 --- a/sysdeps/hppa/entry.h +++ b/sysdeps/hppa/entry.h @@ -2,9 +2,12 @@ extern void _start (void); #endif +/* Lives in libgcc.so and canonicalizes function pointers for comparison. */ +extern unsigned int __canonicalize_funcptr_for_compare (unsigned int fptr); + /* The function's entry point is stored in the first word of the function descriptor (plabel) of _start(). */ -#define ENTRY_POINT __canonicalize_funcptr_for_compare(_start) +#define ENTRY_POINT __canonicalize_funcptr_for_compare((unsigned int)_start) /* We have to provide a special declaration. */ #define ENTRY_POINT_DECL(class) class void _start (void); diff --git a/sysdeps/hppa/fpu/fegetexcept.c b/sysdeps/hppa/fpu/fegetexcept.c index 1a82886433..8198cc5ff9 100644 --- a/sysdeps/hppa/fpu/fegetexcept.c +++ b/sysdeps/hppa/fpu/fegetexcept.c @@ -22,7 +22,7 @@ int fegetexcept (void) { - union { unsigned long long l; unsigned int sw[2] } s; + union { unsigned long long l; unsigned int sw[2]; } s; /* Get the current status word. */ __asm__ ("fstd %%fr0,0(%1) \n\t" diff --git a/sysdeps/hppa/fpu/ftestexcept.c b/sysdeps/hppa/fpu/ftestexcept.c index ed0476e582..091ebfb9b2 100644 --- a/sysdeps/hppa/fpu/ftestexcept.c +++ b/sysdeps/hppa/fpu/ftestexcept.c @@ -22,7 +22,7 @@ int fetestexcept (int excepts) { - union { unsigned long long l; unsigned int sw[2] } s; + union { unsigned long long l; unsigned int sw[2]; } s; /* Get the current status word. */ __asm__ ("fstd %%fr0,0(%1) \n\t" diff --git a/sysdeps/hppa/sotruss-lib.c b/sysdeps/hppa/sotruss-lib.c new file mode 100644 index 0000000000..4e7a88ff8f --- /dev/null +++ b/sysdeps/hppa/sotruss-lib.c @@ -0,0 +1,51 @@ +/* Override generic sotruss-lib.c to define actual functions for HP-PARISC. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + 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, see + <http://www.gnu.org/licenses/>. */ + +#define HAVE_ARCH_PLTENTER +#define HAVE_ARCH_PLTEXIT + +#include <elf/sotruss-lib.c> + +ElfW(Addr) +la_hppa_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)), + unsigned int ndx __attribute__ ((unused)), + uintptr_t *refcook, uintptr_t *defcook, + La_hppa_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + print_enter (refcook, defcook, symname, + regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2], + *flags); + + /* No need to copy anything, we will not need the parameters in any case. */ + *framesizep = 0; + + return sym->st_value; +} + +unsigned int +la_hppa_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, + const struct La_hppa_regs *inregs, + struct La_hppa_retval *outregs, const char *symname) +{ + print_exit (refcook, defcook, symname, outregs->lrv_r28); + + return 0; +} diff --git a/sysdeps/unix/sysv/linux/hppa/bits/atomic.h b/sysdeps/unix/sysv/linux/hppa/bits/atomic.h index 9550196f77..abde83e2f9 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/atomic.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/atomic.h @@ -67,7 +67,7 @@ typedef uintmax_t uatomic_max_t; # define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ ({ \ volatile int lws_errno; \ - volatile int lws_ret; \ + __typeof__ (*mem) lws_ret; \ asm volatile( \ "0: \n\t" \ "copy %2, %%r26 \n\t" \ @@ -96,10 +96,10 @@ typedef uintmax_t uatomic_max_t; # define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ ({ \ - int ret; \ + __typeof__ (*mem) ret; \ ret = atomic_compare_and_exchange_val_acq(mem, newval, oldval); \ /* Return 1 if it was already acquired. */ \ - (ret != (int)oldval); \ + (ret != oldval); \ }) #else # error __ASSUME_LWS_CAS is required to build glibc. diff --git a/sysdeps/unix/sysv/linux/hppa/mmap.c b/sysdeps/unix/sysv/linux/hppa/mmap.c index f718e29079..a7570e2c6e 100644 --- a/sysdeps/unix/sysv/linux/hppa/mmap.c +++ b/sysdeps/unix/sysv/linux/hppa/mmap.c @@ -46,4 +46,4 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) } -strong_alias (__mmap, mmap) +weak_alias (__mmap, mmap) diff --git a/sysdeps/unix/sysv/linux/hppa/pthread.h b/sysdeps/unix/sysv/linux/hppa/pthread.h index 40ff65bdfb..544dd21acd 100644 --- a/sysdeps/unix/sysv/linux/hppa/pthread.h +++ b/sysdeps/unix/sysv/linux/hppa/pthread.h @@ -15,1141 +15,7 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#ifndef _PTHREAD_H -#define _PTHREAD_H 1 - -#include <features.h> -#include <endian.h> -#include <sched.h> -#include <time.h> - -#include <bits/pthreadtypes.h> -#include <bits/setjmp.h> -#include <bits/wordsize.h> - - -/* Detach state. */ -enum -{ - PTHREAD_CREATE_JOINABLE, -#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE - PTHREAD_CREATE_DETACHED -#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED -}; - - -/* Mutex types. */ -enum -{ - PTHREAD_MUTEX_TIMED_NP, - PTHREAD_MUTEX_RECURSIVE_NP, - PTHREAD_MUTEX_ERRORCHECK_NP, - PTHREAD_MUTEX_ADAPTIVE_NP -#if defined __USE_UNIX98 || defined __USE_XOPEN2K8 - , - PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, - PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, - PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, - PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL -#endif -#ifdef __USE_GNU - /* For compatibility. */ - , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP -#endif -}; - - -#ifdef __USE_XOPEN2K -/* Robust mutex or not flags. */ -enum -{ - PTHREAD_MUTEX_STALLED, - PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, - PTHREAD_MUTEX_ROBUST, - PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST -}; -#endif - - -#if defined __USE_POSIX199506 || defined __USE_UNIX98 -/* Mutex protocols. */ -enum -{ - PTHREAD_PRIO_NONE, - PTHREAD_PRIO_INHERIT, - PTHREAD_PRIO_PROTECT -}; -#endif - - -/* Mutex initializers. */ -#ifdef __PTHREAD_MUTEX_HAVE_PREV -# define PTHREAD_MUTEX_INITIALIZER \ - { { 0, 0, 0, 0, 0, 0, { 0, 0 } } } -# ifdef __USE_GNU -# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ - { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0, 0 } } } -# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ - { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0, { 0, 0 } } } -# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ - { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0, { 0, 0 } } } -# endif -#else -# define PTHREAD_MUTEX_INITIALIZER \ - { { 0, 0, 0, 0, 0, { 0 } } } -# ifdef __USE_GNU -# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ - { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } } -# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ - { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0, { 0 } } } -# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ - { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0, { 0 } } } -# endif -#endif - - -/* Read-write lock types. */ -#if defined __USE_UNIX98 || defined __USE_XOPEN2K -enum -{ - PTHREAD_RWLOCK_PREFER_READER_NP, - PTHREAD_RWLOCK_PREFER_WRITER_NP, - PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, - PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP -}; - -/* Define __PTHREAD_RWLOCK_INT_FLAGS_SHARED to 1 if pthread_rwlock_t - has the shared field. All 64-bit architectures have the shared field - in pthread_rwlock_t. */ -#ifndef __PTHREAD_RWLOCK_INT_FLAGS_SHARED -# if __WORDSIZE == 64 -# define __PTHREAD_RWLOCK_INT_FLAGS_SHARED 1 -# endif -#endif - -/* Read-write lock initializers. */ -# define PTHREAD_RWLOCK_INITIALIZER \ - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } -# ifdef __USE_GNU -# ifdef __PTHREAD_RWLOCK_INT_FLAGS_SHARED -# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ - PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } } -# else -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ - { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, \ - 0, 0, 0, 0 } } -# else -# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,\ - 0 } } -# endif -# endif -# endif -#endif /* Unix98 or XOpen2K */ - - -/* Scheduler inheritance. */ -enum -{ - PTHREAD_INHERIT_SCHED, -#define PTHREAD_INHERIT_SCHED PTHREAD_INHERIT_SCHED - PTHREAD_EXPLICIT_SCHED -#define PTHREAD_EXPLICIT_SCHED PTHREAD_EXPLICIT_SCHED -}; - - -/* Scope handling. */ -enum -{ - PTHREAD_SCOPE_SYSTEM, -#define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM - PTHREAD_SCOPE_PROCESS -#define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS -}; - - -/* Process shared or private flag. */ -enum -{ - PTHREAD_PROCESS_PRIVATE, -#define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE - PTHREAD_PROCESS_SHARED -#define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED -}; - - - -/* Conditional variable handling. */ -#define PTHREAD_COND_INITIALIZER { { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } } - - -/* Cleanup buffers */ -struct _pthread_cleanup_buffer -{ - void (*__routine) (void *); /* Function to call. */ - void *__arg; /* Its argument. */ - int __canceltype; /* Saved cancellation type. */ - struct _pthread_cleanup_buffer *__prev; /* Chaining of cleanup functions. */ -}; - -/* Cancellation */ -enum -{ - PTHREAD_CANCEL_ENABLE, -#define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLE - PTHREAD_CANCEL_DISABLE -#define PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE -}; -enum -{ - PTHREAD_CANCEL_DEFERRED, -#define PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DEFERRED - PTHREAD_CANCEL_ASYNCHRONOUS -#define PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS -}; -#define PTHREAD_CANCELED ((void *) -1) - - -/* Single execution handling. */ -#define PTHREAD_ONCE_INIT 0 - - -#ifdef __USE_XOPEN2K -/* Value returned by 'pthread_barrier_wait' for one of the threads after - the required number of threads have called this function. - -1 is distinct from 0 and all errno constants */ -# define PTHREAD_BARRIER_SERIAL_THREAD -1 -#endif - - -__BEGIN_DECLS - -/* Create a new thread, starting with execution of START-ROUTINE - getting passed ARG. Creation attributed come from ATTR. The new - handle is stored in *NEWTHREAD. */ -extern int pthread_create (pthread_t *__restrict __newthread, - const pthread_attr_t *__restrict __attr, - void *(*__start_routine) (void *), - void *__restrict __arg) __THROWNL __nonnull ((1, 3)); - -/* Terminate calling thread. - - The registered cleanup handlers are called via exception handling - so we cannot mark this function with __THROW.*/ -extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); - -/* Make calling thread wait for termination of the thread TH. The - exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN - is not NULL. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int pthread_join (pthread_t __th, void **__thread_return); - -#ifdef __USE_GNU -/* Check whether thread TH has terminated. If yes return the status of - the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL. */ -extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW; - -/* Make calling thread wait for termination of the thread TH, but only - until TIMEOUT. The exit status of the thread is stored in - *THREAD_RETURN, if THREAD_RETURN is not NULL. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, - const struct timespec *__abstime); -#endif - -/* Indicate that the thread TH is never to be joined with PTHREAD_JOIN. - The resources of TH will therefore be freed immediately when it - terminates, instead of waiting for another thread to perform PTHREAD_JOIN - on it. */ -extern int pthread_detach (pthread_t __th) __THROW; - - -/* Obtain the identifier of the current thread. */ -extern pthread_t pthread_self (void) __THROW __attribute__ ((__const__)); - -/* Compare two thread identifiers. */ -extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) - __THROW __attribute__ ((__const__)); - - -/* Thread attribute handling. */ - -/* Initialize thread attribute *ATTR with default attributes - (detachstate is PTHREAD_JOINABLE, scheduling policy is SCHED_OTHER, - no user-provided stack). */ -extern int pthread_attr_init (pthread_attr_t *__attr) __THROW __nonnull ((1)); - -/* Destroy thread attribute *ATTR. */ -extern int pthread_attr_destroy (pthread_attr_t *__attr) - __THROW __nonnull ((1)); - -/* Get detach state attribute. */ -extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, - int *__detachstate) - __THROW __nonnull ((1, 2)); - -/* Set detach state attribute. */ -extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, - int __detachstate) - __THROW __nonnull ((1)); - - -/* Get the size of the guard area created for stack overflow protection. */ -extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, - size_t *__guardsize) - __THROW __nonnull ((1, 2)); - -/* Set the size of the guard area created for stack overflow protection. */ -extern int pthread_attr_setguardsize (pthread_attr_t *__attr, - size_t __guardsize) - __THROW __nonnull ((1)); - - -/* Return in *PARAM the scheduling parameters of *ATTR. */ -extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, - struct sched_param *__restrict __param) - __THROW __nonnull ((1, 2)); - -/* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */ -extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, - const struct sched_param *__restrict - __param) __THROW __nonnull ((1, 2)); - -/* Return in *POLICY the scheduling policy of *ATTR. */ -extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict - __attr, int *__restrict __policy) - __THROW __nonnull ((1, 2)); - -/* Set scheduling policy in *ATTR according to POLICY. */ -extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) - __THROW __nonnull ((1)); - -/* Return in *INHERIT the scheduling inheritance mode of *ATTR. */ -extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict - __attr, int *__restrict __inherit) - __THROW __nonnull ((1, 2)); - -/* Set scheduling inheritance mode in *ATTR according to INHERIT. */ -extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, - int __inherit) - __THROW __nonnull ((1)); - - -/* Return in *SCOPE the scheduling contention scope of *ATTR. */ -extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, - int *__restrict __scope) - __THROW __nonnull ((1, 2)); - -/* Set scheduling contention scope in *ATTR according to SCOPE. */ -extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) - __THROW __nonnull ((1)); - -/* Return the previously set address for the stack. */ -extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict - __attr, void **__restrict __stackaddr) - __THROW __nonnull ((1, 2)) __attribute_deprecated__; - -/* Set the starting address of the stack of the thread to be created. - Depending on whether the stack grows up or down the value must either - be higher or lower than all the address in the memory block. The - minimal size of the block must be PTHREAD_STACK_MIN. */ -extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, - void *__stackaddr) - __THROW __nonnull ((1)) __attribute_deprecated__; - -/* Return the currently used minimal stack size. */ -extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict - __attr, size_t *__restrict __stacksize) - __THROW __nonnull ((1, 2)); - -/* Add informa |
