gthr-posix.h: Include <unistd.h> for feature tests.
* 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. From-SVN: r58630
This commit is contained in:
parent
3950794d0a
commit
c95d07f893
@ -1,3 +1,13 @@
|
||||
2002-10-29 Jason Thorpe <thorpej@wasabisystems.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2002-10-29 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* config/h8300/h8300.h (TARGET_DEFAULT): Make it
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user