diff options
author | thorpej <thorpej@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-10-29 18:23:02 +0000 |
---|---|---|
committer | thorpej <thorpej@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-10-29 18:23:02 +0000 |
commit | f9f6f55aa6983fc95ad907cf2de5d635d1a8488c (patch) | |
tree | 1211af4b64b815810c777f183715ab35af995db0 /gcc/gthr-posix.h | |
parent | 2b7014df344c4d532e0902b0bd4ac800f4172425 (diff) | |
download | gcc-f9f6f55aa6983fc95ad907cf2de5d635d1a8488c.tar.gz |
* gthr-posix.h: Include <unistd.h> for feature tests.
(sched_get_priority_max, sched_get_priority_min)
(pthread_getschedparam, pthread_setschedparam): Only use
if _POSIX_THREAD_PRIORITY_SCHEDULING is defined.
(__gthread_objc_thread_set_priority): Don't treat all non-zero
returns from sched_get_priority_max and sched_get_priority_min
as an error.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58630 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gthr-posix.h')
-rw-r--r-- | gcc/gthr-posix.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/gthr-posix.h b/gcc/gthr-posix.h index 80f6ff742a2..463cae07054 100644 --- a/gcc/gthr-posix.h +++ b/gcc/gthr-posix.h @@ -35,6 +35,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define __GTHREADS 1 #include <pthread.h> +#include <unistd.h> typedef pthread_key_t __gthread_key_t; typedef pthread_once_t __gthread_once_t; @@ -67,15 +68,21 @@ typedef pthread_mutex_t __gthread_mutex_t; #pragma weak pthread_mutex_init #pragma weak pthread_mutex_destroy #pragma weak pthread_self +/* These really should be protected by _POSIX_PRIORITY_SCHEDULING, but + we use them inside a _POSIX_THREAD_PRIORITY_SCHEDULING block. */ +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING #pragma weak sched_get_priority_max #pragma weak sched_get_priority_min +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ #pragma weak sched_yield #pragma weak pthread_attr_destroy #pragma weak pthread_attr_init #pragma weak pthread_attr_setdetachstate +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING #pragma weak pthread_getschedparam #pragma weak pthread_setschedparam -#endif +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC */ static inline int __gthread_active_p (void) @@ -173,6 +180,7 @@ __gthread_objc_thread_set_priority(int priority) if (!__gthread_active_p()) return -1; else { +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING pthread_t thread_id = pthread_self(); int policy; struct sched_param params; @@ -180,10 +188,10 @@ __gthread_objc_thread_set_priority(int priority) if (pthread_getschedparam(thread_id, &policy, ¶ms) == 0) { - if ((priority_max = sched_get_priority_max(policy)) != 0) + if ((priority_max = sched_get_priority_max(policy)) == -1) return -1; - if ((priority_min = sched_get_priority_min(policy)) != 0) + if ((priority_min = sched_get_priority_min(policy)) == -1) return -1; if (priority > priority_max) @@ -200,6 +208,7 @@ __gthread_objc_thread_set_priority(int priority) if (pthread_setschedparam(thread_id, policy, ¶ms) == 0) return 0; } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ return -1; } } @@ -208,6 +217,7 @@ __gthread_objc_thread_set_priority(int priority) static inline int __gthread_objc_thread_get_priority(void) { +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING if (__gthread_active_p ()) { int policy; @@ -219,6 +229,7 @@ __gthread_objc_thread_get_priority(void) return -1; } else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ return OBJC_THREAD_INTERACTIVE_PRIORITY; } |