Update.
[kopensolaris-gnu/glibc.git] / linuxthreads / attr.c
index 027f69c..cdd27d6 100644 (file)
 
 /* Handling of thread attributes */
 
+#include <errno.h>
 #include <unistd.h>
 #include <sys/param.h>
 #include "pthread.h"
 #include "internals.h"
 
-
 int __pthread_attr_init_2_1(pthread_attr_t *attr)
 {
   size_t ps = __getpagesize ();
@@ -80,14 +80,14 @@ int pthread_attr_setschedparam(pthread_attr_t *attr,
 
   if (param->sched_priority < min_prio || param->sched_priority > max_prio)
     return EINVAL;
-  attr->schedparam = *param;
+  memcpy (&attr->schedparam, param, sizeof (struct sched_param));
   return 0;
 }
 
 int pthread_attr_getschedparam(const pthread_attr_t *attr,
                                struct sched_param *param)
 {
-  *param = attr->schedparam;
+  memcpy (param, &attr->schedparam, sizeof (struct sched_param));
   return 0;
 }
 
@@ -185,11 +185,8 @@ weak_alias (__pthread_attr_getstackaddr, pthread_attr_getstackaddr)
 
 int __pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize)
 {
-  size_t ps = __getpagesize ();
-
-  /* We don't accept value smaller than PTHREAD_STACK_MIN or bigger than
-     2MB - pagesize.  */
-  if (stacksize < PTHREAD_STACK_MIN || stacksize > STACK_SIZE - ps)
+  /* We don't accept value smaller than PTHREAD_STACK_MIN.  */
+  if (stacksize < PTHREAD_STACK_MIN)
     return EINVAL;
 
   attr->stacksize = stacksize;