aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog14
-rw-r--r--linuxthreads/attr.c2
-rw-r--r--linuxthreads/manager.c6
-rw-r--r--linuxthreads/mutex.c12
4 files changed, 26 insertions, 8 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index ef0634d..4a0cf33 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,17 @@
+1998-07-16 10:52 Ulrich Drepper <drepper@cygnus.com>
+
+ * manager.c (pthread_handle_create): Check whether sched_setscheduler
+ call can succeed here.
+
+ * mutex.c: Define __pthread_mutexattr_settype and make
+ __pthread_mutexattr_setkind_np an alias.
+ Likewise for __pthread_mutexattr_gettype.
+
+1998-07-15 11:00 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
+
+ * attr.c (pthread_attr_setschedpolicy): Don't check whether caller
+ is root.
+
1998-07-14 19:38 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/pthread/bits/libc-lock.h: Define __libc_cleanup_end.
diff --git a/linuxthreads/attr.c b/linuxthreads/attr.c
index b561003..7a099857 100644
--- a/linuxthreads/attr.c
+++ b/linuxthreads/attr.c
@@ -96,8 +96,6 @@ int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy)
{
if (policy != SCHED_OTHER && policy != SCHED_FIFO && policy != SCHED_RR)
return EINVAL;
- if (policy != SCHED_OTHER && geteuid() != 0)
- return ENOTSUP;
attr->schedpolicy = policy;
return 0;
}
diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c
index 7d48489..d14a57c 100644
--- a/linuxthreads/manager.c
+++ b/linuxthreads/manager.c
@@ -217,6 +217,12 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
void *guardaddr = NULL;
size_t guardsize = 0;
+ /* First check whether we have to change the policy and if yes, whether
+ we can do this. Normally this should be done by examining the
+ return value of the __sched_setscheduler call in pthread_start_thread
+ but this is hard to implement. FIXME */
+ if (attr != NULL && attr->schedpolicy != SCHED_OTHER && geteuid () != 0)
+ return EPERM;
/* Find a free stack segment for the current stack */
for (sseg = 1; ; sseg++)
{
diff --git a/linuxthreads/mutex.c b/linuxthreads/mutex.c
index a337bad..74b0922 100644
--- a/linuxthreads/mutex.c
+++ b/linuxthreads/mutex.c
@@ -144,7 +144,7 @@ int __pthread_mutexattr_destroy(pthread_mutexattr_t *attr)
}
weak_alias (__pthread_mutexattr_destroy, pthread_mutexattr_destroy)
-int __pthread_mutexattr_setkind_np(pthread_mutexattr_t *attr, int kind)
+int __pthread_mutexattr_settype(pthread_mutexattr_t *attr, int kind)
{
if (kind != PTHREAD_MUTEX_FAST_NP
&& kind != PTHREAD_MUTEX_RECURSIVE_NP
@@ -153,18 +153,18 @@ int __pthread_mutexattr_setkind_np(pthread_mutexattr_t *attr, int kind)
attr->mutexkind = kind;
return 0;
}
-weak_alias (__pthread_mutexattr_setkind_np, pthread_mutexattr_setkind_np)
-strong_alias (__pthread_mutexattr_setkind_np, __pthread_mutexattr_settype)
weak_alias (__pthread_mutexattr_settype, pthread_mutexattr_settype)
+strong_alias ( __pthread_mutexattr_settype, __pthread_mutexattr_setkind_np)
+weak_alias (__pthread_mutexattr_setkind_np, pthread_mutexattr_setkind_np)
-int __pthread_mutexattr_getkind_np(const pthread_mutexattr_t *attr, int *kind)
+int __pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *kind)
{
*kind = attr->mutexkind;
return 0;
}
-weak_alias (__pthread_mutexattr_getkind_np, pthread_mutexattr_getkind_np)
-strong_alias (__pthread_mutexattr_getkind_np, __pthread_mutexattr_gettype)
weak_alias (__pthread_mutexattr_gettype, pthread_mutexattr_gettype)
+strong_alias (__pthread_mutexattr_gettype, __pthread_mutexattr_getkind_np)
+weak_alias (__pthread_mutexattr_getkind_np, pthread_mutexattr_getkind_np)
/* Once-only execution */