From e121b938c9f012958196a3141f04a3fd4f58bdb9 Mon Sep 17 00:00:00 2001 From: rpj Date: Thu, 31 May 2001 02:01:47 +0000 Subject: 2001-05-30 Ross Johnson * pthread.h (rand_r): Fake using _seed argument to quell compiler warning (compiler should optimise this away later). * GNUmakefile (OPT): Leave symbolic information out of the library and increase optimisation level - for smaller faster prebuilt dlls. 2001-05-29 Ross Johnson Contributed by - Milan Gardian * Makefile: fix typo. * pthreads.h: Fix problems with stdcall/cdecl conventions, in particular remove the need for PT_STDCALL everywhere; remove warning supression. * (errno): Fix the longstanding "inconsistent dll linkage" problem with errno; now also works with /MD debugging libs - warnings emerged when compiling pthreads library with /MD (or /MDd) compiler switch, instead of /MT (or /MTd) (i.e. when compiling pthreads using Multithreaded DLL CRT instead of Multithreaded statically linked CRT). * create.c (pthread_create): Likewise; fix typo. * private.c (ptw32_threadStart): Eliminate use of terminate() which doesn't throw exceptions. * Remove unnecessary #includes from a number of modules - [I had to #include malloc.h in implement.h for gcc - rpj]. 2001-05-29 Ross Johnson Contributed by - Thomas Pfaff * pthread.h (PTHREAD_MUTEX_DEFAULT): New; equivalent to PTHREAD_MUTEX_DEFAULT_NP. * (PTHREAD_MUTEX_NORMAL): Similarly. * (PTHREAD_MUTEX_ERRORCHECK): Similarly. * (PTHREAD_MUTEX_RECURSIVE): Similarly. * (pthread_mutex_setdefaultkind_np): New; Linux compatibility stub for pthread_mutexattr_settype. * (pthread_mutexattr_getkind_np): New; Linux compatibility stub for pthread_mutexattr_gettype. * mutex.c (pthread_mutexattr_settype): New; allow the following types of mutex: PTHREAD_MUTEX_DEFAULT_NP PTHREAD_MUTEX_NORMAL_NP PTHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_RECURSIVE_NP * Note that PTHREAD_MUTEX_DEFAULT is equivalent to PTHREAD_MUTEX_NORMAL - ie. mutexes should no longer be recursive by default, and a thread will deadlock if it tries to relock a mutex it already owns. This is inline with other pthreads implementations. * (pthread_mutex_lock): Process the lock request according to the mutex type. * (pthread_mutex_init): Eliminate use of Win32 mutexes as the basis of POSIX mutexes - instead, a combination of one critical section and one semaphore are used in conjunction with Win32 Interlocked* routines. * (pthread_mutex_destroy): Likewise. * (pthread_mutex_lock): Likewise. * (pthread_mutex_trylock): Likewise. * (pthread_mutex_unlock): Likewise. * Use longjmp/setjmp to implement cancelation when building the library using a C compiler which doesn't support exceptions, e.g. gcc -x c (note that gcc -x c++ uses exceptions). * Also fixed some of the same typos and eliminated PT_STDCALL as Milan Gardian's patches above. 2001-02-07 Ross Johnson Contributed by - Alexander Terekhov * rwlock.c: Revamped. * implement.h (pthread_rwlock_t_): Redefined. This implementation does not have reader/writer starvation problem. Rwlock attempts to behave more like a normal mutex with races and scheduling policy determining who is more important; It also supports recursive locking, has less synchronization overhead (no broadcasts at all, readers are not blocked on any condition variable) and seem to be faster than the current implementation [W98 appears to be approximately 15 percent faster at least - on top of speed increase from Thomas Pfaff's changes to mutex.c - rpj]. --- pthread.def | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'pthread.def') diff --git a/pthread.def b/pthread.def index 9371ce9..623dc17 100644 --- a/pthread.def +++ b/pthread.def @@ -1,5 +1,5 @@ ; pthread.def -; Last updated: $Date: 2000/12/28 05:32:07 $ +; Last updated: $Date: 2001/05/31 02:01:47 $ ; Currently unimplemented functions are commented out. @@ -13,7 +13,7 @@ pthread_attr_getdetachstate ;pthread_attr_getinheritsched pthread_attr_getschedparam ;pthread_attr_getschedpolicy -;pthread_attr_getscope +pthread_attr_getscope pthread_attr_getstackaddr pthread_attr_getstacksize pthread_attr_init @@ -21,12 +21,12 @@ pthread_attr_setdetachstate ;pthread_attr_setinheritsched pthread_attr_setschedparam ;pthread_attr_setschedpolicy -;pthread_attr_setscope +pthread_attr_setscope pthread_attr_setstackaddr pthread_attr_setstacksize pthread_cancel ; -; These are implemented as macros +; These two are implemented as macros ; ;pthread_cleanup_pop ;pthread_cleanup_push @@ -45,6 +45,7 @@ pthread_create pthread_detach pthread_equal pthread_exit +pthread_getconcurrency pthread_getschedparam pthread_getspecific pthread_join @@ -55,10 +56,12 @@ pthread_mutexattr_destroy ;pthread_mutexattr_getprioceiling ;pthread_mutexattr_getprotocol pthread_mutexattr_getpshared +pthread_mutexattr_gettype pthread_mutexattr_init ;pthread_mutexattr_setprioceiling ;pthread_mutexattr_setprotocol pthread_mutexattr_setpshared +pthread_mutexattr_settype pthread_mutexattr_destroy pthread_mutex_init pthread_mutex_destroy @@ -69,6 +72,7 @@ pthread_once pthread_self pthread_setcancelstate pthread_setcanceltype +pthread_setconcurrency pthread_setschedparam pthread_setspecific ;pthread_sigmask @@ -101,7 +105,6 @@ pthread_rwlock_unlock ; ; Non-portable but useful ; -pthread_mutexattr_setforcecs_np pthread_getw32threadhandle_np pthread_delay_np pthreadCancelableWait @@ -114,8 +117,8 @@ pthread_win32_thread_detach_np ; ; Needed if !defined(_MSC_VER) && !defined(__cplusplus) ; -pthread_push_cleanup -pthread_pop_cleanup +ptw32_push_cleanup +ptw32_pop_cleanup ; ; Not for use directly. Needed by macros in pthread.h ; to return internal SEH code. -- cgit v1.2.3