1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-06-12 08:21:58 +03:00
2000-09-11  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/pthread/pthread.h: Declare pthread_attr_getstack and
	pthread_attr_setstack.
	* Versions [libpthread] (GLIBC_2.2): Export pthread_attr_getstack and
	pthread_attr_setstack.
	* attr.c (pthread_attr_getstack, pthread_attr_setstack): New functions.
This commit is contained in:
Ulrich Drepper
2000-09-11 19:13:06 +00:00
parent 72c65ff44b
commit b81c896174
4 changed files with 59 additions and 0 deletions

View File

@ -22,6 +22,7 @@
#include "pthread.h"
#include "internals.h"
#include <shlib-compat.h>
#include <stackinfo.h>
int __pthread_attr_init_2_1(pthread_attr_t *attr)
{
@ -224,3 +225,39 @@ int __pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize)
return 0;
}
weak_alias (__pthread_attr_getstacksize, pthread_attr_getstacksize)
int __pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
size_t stacksize)
{
int err;
if ((((uintptr_t) stackaddr)
& ~__alignof__ (struct _pthread_descr_struct)) != 0)
err = EINVAL;
else
err = __pthread_attr_setstacksize (attr, stacksize);
if (err == 0)
{
#ifdef _STACK_GROWS_UP
attr->__stackaddr = (char *) stackaddr + stacksize;
#else
attr->__stackaddr = stackaddr;
#endif
attr->__stackaddr_set = 1;
}
return err;
}
weak_alias (__pthread_attr_setstack, pthread_attr_setstack)
int __pthread_attr_getstack (const pthread_attr_t *attr, void **stackaddr,
size_t *stacksize)
{
/* XXX This function has a stupid definition. The standard specifies
no error value but what is if no stack address was set? We simply
return the value we have in the member. */
*stackaddr = attr->__stackaddr;
*stacksize = attr->__stacksize;
return 0;
}
weak_alias (__pthread_attr_getstack, pthread_attr_getstack)