diff --git a/lib/libpthread/pthread.c b/lib/libpthread/pthread.c index 566d0a4092f8..737db23a5808 100644 --- a/lib/libpthread/pthread.c +++ b/lib/libpthread/pthread.c @@ -1,4 +1,4 @@ -/* $NetBSD: pthread.c,v 1.19 2003/05/27 15:24:24 christos Exp $ */ +/* $NetBSD: pthread.c,v 1.20 2003/06/02 16:59:26 christos Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ */ #include -__RCSID("$NetBSD: pthread.c,v 1.19 2003/05/27 15:24:24 christos Exp $"); +__RCSID("$NetBSD: pthread.c,v 1.20 2003/06/02 16:59:26 christos Exp $"); #include #include @@ -782,6 +782,34 @@ pthread_attr_getschedparam(const pthread_attr_t *attr, return 0; } +int +pthread_attr_getstack(const pthread_attr_t *attr, void **addr, size_t *size) +{ + if ((attr == NULL) || (attr->pta_magic != PT_ATTR_MAGIC)) + return EINVAL; + *addr = pthread__self()->pt_stack.ss_sp; + *size = pthread__self()->pt_stack.ss_size; + return 0; +} + +int +pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *size) +{ + if ((attr == NULL) || (attr->pta_magic != PT_ATTR_MAGIC)) + return EINVAL; + *size = pthread__self()->pt_stack.ss_size; + return 0; +} + +int +pthread_attr_getstackaddr(const pthread_attr_t *attr, void **addr) +{ + if ((attr == NULL) || (attr->pta_magic != PT_ATTR_MAGIC)) + return EINVAL; + *addr = pthread__self()->pt_stack.ss_sp; + return 0; +} + int pthread_attr_getname_np(const pthread_attr_t *attr, char *name, size_t len, diff --git a/lib/libpthread/pthread.h b/lib/libpthread/pthread.h index 8da5af522406..7f4190cc20a0 100644 --- a/lib/libpthread/pthread.h +++ b/lib/libpthread/pthread.h @@ -1,4 +1,4 @@ -/* $NetBSD: pthread.h,v 1.9 2003/02/26 22:02:48 thorpej Exp $ */ +/* $NetBSD: pthread.h,v 1.10 2003/06/02 16:59:27 christos Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -67,6 +67,9 @@ int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *); int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *); +int pthread_attr_getstack(const pthread_attr_t *, void **, size_t *); +int pthread_attr_getstacksize(const pthread_attr_t *, size_t *); +int pthread_attr_getstackaddr(const pthread_attr_t *, void **); int pthread_attr_getdetachstate(const pthread_attr_t *, int *); int pthread_attr_setdetachstate(pthread_attr_t *, int); int pthread_attr_getname_np(const pthread_attr_t *, char *,