From 40cf527fe65e12a745ca7b981676da1fb691eee6 Mon Sep 17 00:00:00 2001 From: rpj Date: Sun, 19 Jul 1998 16:48:18 +0000 Subject: Mon Jul 20 02:31:05 1998 Ross Johnson * private.c (_pthread_getthreadindex): Implement. * pthread.h: Add application static data dependent on _PTHREADS_BUILD_DLL define. This is needed to avoid allocating non-sharable static data within the pthread DLL. * implement.h: Add _pthread_cleanup_stack_t, _pthread_cleanup_node_t and _PTHREAD_HASH_INDEX. * exit.c (pthread_exit): Begin work on cleanup and de-allocate thread-private storage. * create.c (pthread_create): Add thread to thread table. Keep a thread-private copy of the attributes with default values filled in when necessary. Same for the cleanup stack. Make pthread_create C run-time library friendly by using _beginthreadex() instead of CreateThread(). Fix error returns. Sun Jul 19 16:26:23 1998 Ross Johnson * implement.h: Rename pthreads_thread_count to _pthread_threads_count. Create _pthread_threads_thread_t struct to keep thread specific data. * create.c: Rename pthreads_thread_count to _pthread_threads_count. (pthread_create): Handle errors from CreateThread(). --- implement.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'implement.h') diff --git a/implement.h b/implement.h index 254d86f..2e03c48 100644 --- a/implement.h +++ b/implement.h @@ -9,10 +9,23 @@ /* FIXME: Arbitrary. Need values from Win32. */ -#define PTHREAD_THREADS_MAX 256 +#define PTHREAD_THREADS_MAX 128 #define PTHREAD_STACK_MIN 65535 -extern DWORD pthreads_thread_count; +#define _PTHREAD_HASH_INDEX(x) (((ULONG) x) % PTHREAD_THREADS_MAX) + +typedef struct _pthread_cleanup_stack _pthread_cleanup_stack_t; +struct _pthread_cleanup_stck { + _pthread_cleanup_stack_t first; + int count; +}; + +typedef struct _pthread_cleanup_node _pthread_cleanup_node_t; +struct _pthread_cleanup_node { + _pthread_cleanup_node_t next; + void (* routine)(void *); + void * arg; +}; typedef struct { size_t stacksize; @@ -27,3 +40,5 @@ typedef struct { } _pthread_condattr_t; #endif /* _IMPLEMENT_H */ + + -- cgit v1.2.3