winpthreads: Add pthread_attr_getstack and pthread_attr_setstack.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-libraries/winpthreads/include/pthread.h b/mingw-w64-libraries/winpthreads/include/pthread.h
index 4c2affd..15c15c6 100644
--- a/mingw-w64-libraries/winpthreads/include/pthread.h
+++ b/mingw-w64-libraries/winpthreads/include/pthread.h
@@ -362,6 +362,8 @@
int WINPTHREAD_API pthread_attr_getinheritsched(const pthread_attr_t *a, int *flag);
int WINPTHREAD_API pthread_attr_setscope(pthread_attr_t *a, int flag);
int WINPTHREAD_API pthread_attr_getscope(const pthread_attr_t *a, int *flag);
+int WINPTHREAD_API pthread_attr_getstack(const pthread_attr_t *attr, void **stack, size_t *size);
+int WINPTHREAD_API pthread_attr_setstack(pthread_attr_t *attr, void *stack, size_t size);
int WINPTHREAD_API pthread_attr_getstackaddr(const pthread_attr_t *attr, void **stack);
int WINPTHREAD_API pthread_attr_setstackaddr(pthread_attr_t *attr, void *stack);
int WINPTHREAD_API pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *size);
diff --git a/mingw-w64-libraries/winpthreads/src/thread.c b/mingw-w64-libraries/winpthreads/src/thread.c
index a9f286b..55361ae 100644
--- a/mingw-w64-libraries/winpthreads/src/thread.c
+++ b/mingw-w64-libraries/winpthreads/src/thread.c
@@ -1395,6 +1395,22 @@
}
int
+pthread_attr_getstack (const pthread_attr_t *attr, void **stack, size_t *size)
+{
+ *stack = (char *) attr->stack - attr->s_size;
+ *size = attr->s_size;
+ return 0;
+}
+
+int
+pthread_attr_setstack (pthread_attr_t *attr, void *stack, size_t size)
+{
+ attr->s_size = size;
+ attr->stack = (char *) stack + size;
+ return 0;
+}
+
+int
pthread_attr_getstackaddr (const pthread_attr_t *attr, void **stack)
{
*stack = attr->stack;