summaryrefslogtreecommitdiffstats
path: root/libpthread/nptl/pthread_attr_setstack.c
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2005-06-03 02:51:14 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2005-06-03 02:51:14 +0000
commit5b9e501c32829682998ec9b5bfdd9417b99d1ad3 (patch)
tree1d1671382a93930180b7ec2a9104bba4baf9a71b /libpthread/nptl/pthread_attr_setstack.c
parent855c7fda61d9313052a0afdfe851a4b390da845c (diff)
downloaduClibc-alpine-5b9e501c32829682998ec9b5bfdd9417b99d1ad3.tar.bz2
uClibc-alpine-5b9e501c32829682998ec9b5bfdd9417b99d1ad3.tar.xz
Sync up with latest NPTL code from glibc and add minor
#ifdef __UCLIBC__ directives.
Diffstat (limited to 'libpthread/nptl/pthread_attr_setstack.c')
-rw-r--r--libpthread/nptl/pthread_attr_setstack.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/libpthread/nptl/pthread_attr_setstack.c b/libpthread/nptl/pthread_attr_setstack.c
index 88a98d8d2..622e4a225 100644
--- a/libpthread/nptl/pthread_attr_setstack.c
+++ b/libpthread/nptl/pthread_attr_setstack.c
@@ -49,4 +49,41 @@ __pthread_attr_setstack (attr, stackaddr, stacksize)
return 0;
}
+#if PTHREAD_STACK_MIN == 16384
strong_alias (__pthread_attr_setstack, pthread_attr_setstack)
+#else
+# include <shlib-compat.h>
+versioned_symbol (libpthread, __pthread_attr_setstack, pthread_attr_setstack,
+ GLIBC_2_3_3);
+
+# if SHLIB_COMPAT(libpthread, GLIBC_2_2, GLIBC_2_3_3)
+
+int
+__old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
+ size_t stacksize)
+{
+ struct pthread_attr *iattr;
+
+ assert (sizeof (*attr) >= sizeof (struct pthread_attr));
+ iattr = (struct pthread_attr *) attr;
+
+ /* Catch invalid sizes. */
+ if (stacksize < 16384)
+ return EINVAL;
+
+# ifdef EXTRA_PARAM_CHECKS
+ EXTRA_PARAM_CHECKS;
+# endif
+
+ iattr->stacksize = stacksize;
+ iattr->stackaddr = (char *) stackaddr + stacksize;
+ iattr->flags |= ATTR_FLAG_STACKADDR;
+
+ return 0;
+}
+
+compat_symbol (libpthread, __old_pthread_attr_setstack, pthread_attr_setstack,
+ GLIBC_2_2);
+# endif
+
+#endif