| Age | Commit message (Collapse) | Author | 
|---|
|  | * tsd1.c: Re-written. See comments at start of file.
        * Template.c: New. Contains skeleton code and comment template
        intended to fully document the test. | 
|  | tsd1.c test successfully using buildlib.bat and build.bat scripts.
I not convinced that I understand the relationships between "__cplusplus" and
"_WIN32" and the MS compiler, particularly in pthread.h where
pthread_cleanup_push etc is defined. In particular, I have assumed that
the __try/__finally blocks are only available if _WIN32 and __cplusplus
are defined. I suspect this is wrong.
Tue Dec 29 13:11:16 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
	* implement.h: Move the following struct definitions to pthread.h:
	pthread_t_, pthread_attr_t_, pthread_mutex_t_, pthread_mutex_t_,
	pthread_mutexattr_t_, pthread_key_t_, pthread_cond_t_,
	pthread_condattr_t_, pthread_once_t_.
	* pthread.h: Add "_" prefix to pthread_push_cleanup and
	pthread_pop_cleanup internal routines, and associated struct and
	typedefs.
	* buildlib.bat: Add compile command for semaphore.c
	* pthread.def: Comment out pthread_atfork routine name.
	Now unimplemented.
	* tsd.c (pthread_setspecific): Rename tkAssocCreate to
	_pthread_tkAssocCreate.
	(pthread_key_delete): Rename tkAssocDestroy to
	_pthread_tkAssocDestroy.
	* sync.c (pthread_join): Rename threadDestroy to _pthread_threadDestroy
	* sched.c (is_attr): attr is now **attr (was *attr), so add extra
	NULL pointer test.
	(pthread_attr_setschedparam): Increase redirection for attr which is
	now a **.
	(pthread_attr_getschedparam): Ditto.
	(pthread_setschedparam): Change thread validation and rename "thread"
 	Win32 thread Handle element name to match John Bossom's version.
	(pthread_getschedparam): Ditto.
	* private.c (_pthread_threadDestroy): Rename call to
	callUserDestroyRoutines() as _pthread_callUserDestroyRoutines()
	* misc.c: Add #include "implement.h".
	* dll.c: Remove defined(KLUDGE) wrapped code.
	* fork.c: Remove redefinition of ENOMEM.
	Remove pthread_atfork() and fork() with #if 0/#endif.
	* create.c (pthread_create): Rename threadStart and threadDestroy calls
	to _pthread_threadStart and _pthread_threadDestroy.
	* implement.h: Rename "detachedstate" to "detachstate".
	* attr.c: Rename "detachedstate" to "detachstate".
Mon Dec 28 09:54:39 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
	* pthread.h (pthread_attr_t_): Change to *pthread_attr_t.
	* attr.c (pthread_attr_setstacksize): Merge with John Bossom's version.
	(pthread_attr_getstacksize): Merge with John Bossom's version.
	(pthread_attr_setstackaddr): Merge with John Bossom's version.
	(pthread_attr_getstackaddr): Merge with John Bossom's version.
	(pthread_attr_init): Merge with John Bossom's version.
	(pthread_attr_destroy): Merge with John Bossom's version.
	(pthread_attr_getdetachstate): Merge with John Bossom's version.
	(pthread_attr_setdetachstate): Merge with John Bossom's version.
	(is_attr): attr is now **attr (was *attr), so add extra NULL pointer
	test.
	* implement.h (pthread_attr_t_): Add and rename elements in JEB's
	version to correspond to original, so that it can be used with
	original attr routines.
	* pthread.h: Add #endif at end which was truncated in merging. | 
|  | * misc.c (pthreadCancelableWait): New function by John Bossom. Non-stand
ard
        but provides a hook that can be used to implement cancellation points in
        applications that use this library.
        * pthread.h (pthread_cleanup_pop): C++ (non-WIN32) version uses
        try/catch to emulate John Bossom's WIN32 __try/__finally behaviour.
        In the WIN32 version __finally block, add a test for AbnormalTermination
 otherwise
        cleanup is only run if the cleanup_pop execute arg is non-zero. Cancella
tion
        should cause the cleanup to run irrespective of the execute arg.
        * condvar.c (pthread_condattr_init): Replaced by John Bossom's version.
        (pthread_condattr_destroy): Replaced by John Bossom's version.
        (pthread_condattr_getpshared): Replaced by John Bossom's version.
        (pthread_condattr_setpshared): Replaced by John Bossom's version.
        (pthread_cond_init): Replaced by John Bossom's version.
        Fix comment (refered to mutex rather than condition variable).
        (pthread_cond_destroy): Replaced by John Bossom's version.
        (pthread_cond_wait): Replaced by John Bossom's version.
        (pthread_cond_timedwait): Replaced by John Bossom's version.
        (pthread_cond_signal): Replaced by John Bossom's version.
        (pthread_cond_broadcast): Replaced by John Bossom's version.
Thu Dec 17 19:10:46 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * tsd.c (pthread_key_create): Replaced by John Bossom's version.
        (pthread_key_delete): Replaced by John Bossom's version.
        (pthread_setspecific): Replaced by John Bossom's version.
        (pthread_getspecific): Replaced by John Bossom's version.
Mon Dec  7 09:44:40 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * cancel.c (pthread_setcancelstate): Replaced by John Bossom's version.
        (pthread_setcanceltype): Replaced by John Bossom's version.
        (pthread_testcancel): Replaced by John Bossom's version.
        (pthread_cancel): Replaced by John Bossom's version.
        * exit.c (pthread_exit): Replaced by John Bossom's version.
        * misc.c (pthread_self): Replaced by John Bossom's version.
        (pthread_equal): Replaced by John Bossom's version.
        * sync.c (pthread_detach): Replaced by John Bossom's version.
        (pthread_join): Replaced by John Bossom's version.
        * create.c (pthread_create): Replaced by John Bossom's version.
        * private.c (_pthread_processInitialize): New by John Bossom.
        (_pthread_processTerminate): Non-public function by John Bossom.
        (_pthread_threadStart): Non-public function by John Bossom.
        (_pthread_threadDestroy): Non-public function by John Bossom.
        (_pthread_cleanupStack): Non-public function by John Bossom.
        (_pthread_tkAssocCreate): Non-public function by John Bossom.
        (_pthread_tkAssocDestroy): Non-public function by John Bossom.
        (_pthread_callUserDestroyRoutines): Non-public function by John Bossom.
        * implement.h: Added John Bossom's non-API structures and
        declarations.
        * dll.c (PthreadsEntryPoint): Cast return value of GetProcAddress
        to resolve compile warning from MSVC.
        * dll.c (DLLmain): Replaced by John Bossom's version.
        * dll.c (PthreadsEntryPoint):
        Re-applied Anders Norlander's patch:-
        Initialize _pthread_try_enter_critical_section at startup
        and release kernel32 handle when DLL is being unloaded. | 
|  | * README: Update info about subscribing to the mailing list. | 
|  | Q 1     How do I get pthreads-win32 to link under Cygwin32 or Mingw32? | 
|  | * dll.c (PthreadsEntryPoint): Cast return value of GetProcAddress
	to resolve compile warning from MSVC. | 
|  | * buildlib.bat: Fix args to CL when building the .DLL
        * cleanup.c (_pthread_destructor_run_all): Fix TSD key management.
        This is a tidy-up before TSD and Thread management is completely
        replaced by John Bossom's much more elegant code.
        * tsd.c (pthread_key_create): Fix TSD key management.
        * global.c (_pthread_key_virgin_next): Initialise.
        * build.bat: New DOS script to compile and link a pthreads app
        using Microsoft's CL compiler linker.
        * buildlib.bat: New DOS script to compile all the object files
        and create pthread.lib and pthread.dll using Microsoft's CL
        compiler linker. | 
|  | * build.bat: New DOS script to compile and link a pthreads app
        using Microsoft's CL compiler linker.
        * buildlib.bat: New DOS script to compile all the object files
        and create pthread.lib and pthread.dll using Microsoft's CL
        compiler linker. | 
|  | * README: Correct cygwin32 compatibility statement. | 
|  | that hadn't been checked in. Those are to finish off the original TSD management
scheme which will now start to be replaced by John Bossom's implementation.
Anders' description of his changes:-
Fixes the problem with
`TryEnterCriticalSection' on w95 systems. Instead
of directly calling `TryEnterCriticalSection' it
tries to get a pointer at DLL startup and only calls
the function if it exists. See ChangeLog for things
changed.
1998-12-05  Anders Norlander  <anorland@hem2.passagen.se>
	* implement.h (_pthread_try_enter_critical_section): New extern
	* dll.c (_pthread_try_enter_critical_section): New pointer to
	TryEnterCriticalSection if it exists; otherwise NULL.
	* dll.c (PthreadsEntryPoint):
	Initialize _pthread_try_enter_critical_section at startup
	and release kernel32 handle when DLL is being unloaded.
	* mutex.c (pthread_mutex_trylock): Replaced check for NT with
	a check if _pthread_try_enter_critical_section is valid
	pointer to a function. Call _pthread_try_enter_critical_section
	instead of TryEnterCriticalSection to avoid errors on Win95.
Sun Nov 15 21:24:06 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
	* cleanup.c (_pthread_destructor_run_all): Declare missing void * arg.
	Fixup CVS merge conflicts.
Fri Oct 30 15:15:50 1998  Ross Johnson  <rpj@swan.canberra.edu.au>
	* cleanup.c (_pthread_handler_push): Fixed bug appending new
	handler to list reported by Peter Slacik
	<Peter.Slacik@leibinger.freinet.de>.
	(new_thread): Rename poorly named local variable to
	"new_handler".
Sat Oct 24 18:34:59 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
	* global.c: Add TSD key management array and index declarations.
	* implement.h: Ditto for externs.
Fri Oct 23 00:08:09 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
	* implement.h (_PTHREAD_TSD_KEY_REUSE): Add enum.
	* private.c (_pthread_delete_thread): Add call to
	_pthread_destructor_run_all() to clean up the threads keys.
	* cleanup.c (_pthread_destructor_run_all): Check for no more dirty
	keys to run destructors on. Assume that the destructor call always
	succeeds and set the key value to NULL. | 
|  | * condvar.c (cond_wait): Fix semantic error. Test for equality
	instead of making an assignment. | 
|  | * cleanup.c (_pthread_handler_push): Fixed bug appending new
        handler to list reported by Peter Slacik
        <Peter.Slacik@leibinger.freinet.de>.
        (new_thread): Rename poorly named local variable to
        "new_handler". | 
|  | * tsd.c: Add description of pthread_key_delete() from the
	standard as a comment. | 
|  | * tsd1.c (mythread): Fix some casts and add some diagnostics.
	Fix inverted conditional. | 
|  | * private.c (_pthread_new_thread): Remove init of destructorstack.
	No longer an element of pthread_t. | 
|  | * tsd.c (pthread_setspecific): Fix type declaration and cast.
	(pthread_getspecific): Ditto.
	(pthread_getspecific): Change error return value to NULL if key
	is not in use.
Yet again. | 
|  | * tsd.c (pthread_setspecific): Fix type declaration and cast.
        (pthread_getspecific): Ditto. | 
|  | * global.c (_pthread_tsd_key_table): Fix declaration.
        * implement.h(_pthread_TSD_keys_TlsIndex): Add missing extern.
        (_pthread_tsd_mutex): Ditto.
        * create.c (_pthread_start_call): Fix "keys" array declaration.
        Add comment.
        * tsd.c (pthread_setspecific): Fix type declaration and cast.
        (pthread_getspecific): Ditto.
        * cleanup.c (_pthread_destructor_run_all): Declare missing loop
        counter. | 
|  | * private.c (_pthread_new_thread): Increment _pthread_threads_count.
	(_pthread_delete_thread): Decrement _pthread_threads_count.
	Remove some comments.
	* exit.c (_pthread_exit): : Fix two pthread_mutex_lock() calls that
 	should have been pthread_mutex_unlock() calls.
	(_pthread_vacuum): Remove call to _pthread_destructor_pop_all().
	* create.c (pthread_create): Fix two pthread_mutex_lock() calls that
 	should have been pthread_mutex_unlock() calls.
	* global.c (_pthread_tsd_mutex): Add mutex for TSD operations.
	* tsd.c (pthread_key_create): Add critical section.
	(pthread_setspecific): Ditto.
	(pthread_getspecific): Ditto.
	(pthread_key_delete): Ditto.
	* sync.c (pthread_join): Fix two pthread_mutex_lock() calls that
 	should have been pthread_mutex_unlock() calls. | 
|  | * implement.h (_pthread_tsd_key_table): New.
        * create.c (_pthread_start_call): Initialise per-thread TSD keys
        to NULL.
        * misc.c (pthread_once): Correct typo in comment.
        * implement.h (_pthread_destructor_push): Remove.
        (_pthread_destructor_pop): Remove.
        (_pthread_destructor_run_all): Rename from _pthread_destructor_pop_all.
        (_PTHREAD_TSD_KEY_DELETED): Add enum.
        (_PTHREAD_TSD_KEY_INUSE): Add enum.
        * cleanup.c (_pthread_destructor_push): Remove.
        (_pthread_destructor_pop): Remove.
        (_pthread_destructor_run_all): Totally revamped TSD.
        * dll.c (_pthread_TSD_keys_TlsIndex): Initialise.
        * tsd.c (pthread_setspecific): Totally revamped TSD.
        (pthread_getspecific): Ditto.
        (pthread_create): Ditto.
        (pthread_delete): Ditto.
Sun Oct 11 22:44:55 1998  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * global.c (_pthread_tsd_key_table): Add new global.
        * implement.h (_pthread_tsd_key_t and struct _pthread_tsd_key):
        Add.
        (struct _pthread): Remove destructorstack.
        * cleanup.c (_pthread_destructor_run_all): Rename from
        _pthread_destructor_pop_all. The key destructor stack was made
        global rather than per-thread. No longer removes destructor nodes
        from the stack. Comments updated. | 
|  | * tsd1.c: New. Test TSD using 1 key and 2 threads. | 
|  |  | 
|  | * condvar.c (cond_wait): Use POSIX, not Win32 mutex calls.
	(pthread_cond_broadcast): Likewise.
	(pthread_cond_signal): Likewise. | 
|  |  | 
|  | * pthread.def: Update. Some functions aren't available yet, others
	are macros in <pthread.h>.
	* tests/join.c: Remove; useless. | 
|  | * pthread.def: New file for building the DLL. | 
|  | * tests/self.c: Remove; rename to self1.c.
	* tests/self1.c: This is the old self.c.
	* tests/self2.c: New file. Test pthread_self() with a single
	thread. Passes.
	* tests/self3.c: New file. Test pthread_self() with a couple of
	threads to ensure their thread IDs differ. Passes. | 
|  | * misc.c (pthread_once): Use the POSIX mutex primitives, not Win32.
	Remove irrelevant FIXME comment.
	* pthread.h (PTHREAD_ONCE_INIT): Define.
	* tests/once1.c: New file; test for pthread_once(). Passes. | 
|  | * misc.c (pthread_equal): Correct inverted logic bug.
	* tests/create1.c: New file; test pthread_create(). Passes.
	* tests/equal.c: Poor test; remove.
	* tests/equal1.c New file; test pthread_equal(). Passes. | 
|  |  | 
|  | * global.c (PTHREAD_MUTEX_INITIALIZER): Move to pthread.h.
	* pthread.h (PTHREAD_MUTEX_INITIALIZER): Define.
	(pthread_mutex_t): Reimplement as a struct containing a valid
	flag. If the flag is ever down upon entry to a mutex operation,
	we call pthread_mutex_create() to initialise the object. This
	fixes the problem of how to handle statically initialised objects
	that can't call InitializeCriticalSection() due to their context.
	* mutex.c (pthread_mutex_init): Set valid flag.
	(pthread_mutex_destroy): Clear valid flag.
	(pthread_mutex_lock): Check and handle the valid flag.
	(pthread_mutex_unlock): Likewise.
	(pthread_mutex_trylock): Likewise.
	* tests/mutex3.c: New file; test for the static initialisation
	macro. Passes. | 
|  | * tests/mutex2.c: Test pthread_mutex_trylock(). Passes.
	* tests/mutex1.c (main): Eliminate warning. | 
|  | * tests/mutex1.c: New basic test for mutex functions (it passes). | 
|  | * configure.in: Test for __stdcall, not _stdcall. Typo.
	* configure: Regenerate. | 
|  | * attr.c (pthread_attr_setstackaddr): Remove FIXME comment. Win32
        does know about ENOSYS after all.
        (pthread_attr_setstackaddr): Likewise. | 
|  | * create.c (_pthread_start_call): Add STDCALL prefix. | 
|  |  | 
|  |  | 
|  | * config.h.in: Regenerate. | 
|  | * configure.in: Test for the `_stdcall' keyword.  Define `STDCALL'
	to `_stdcall' if we have it, null otherwise.
	* configure: Regenerate.
	* acconfig.h (STDCALL): New define. | 
|  | * mutex.c (pthread_mutex_init): Correct function signature. | 
|  | * attr.c (pthread_attr_init): Only zero out the `sigmask' member
        if we have the sigset_t type.
        * pthread.h (pthread_sigmask): Only provide if we have the
	sigset_t type. | 
|  | * pthread.h: No need to include <unistd.h>.  It doesn't even exist
	on Win32! Again, an artifact of cross-compilation. | 
|  | * process.h: Remove. This was a stand-in before we started doing
	native compilation under Win32.
	* pthread.h (pthread_mutex_init): Make `attr' argument const. | 
|  | * COPYING: Remove.
	* COPYING.LIB: Add. This library is under the LGPL. | 
|  |  | 
|  |  | 
|  |  | 
|  | * configure.in: Test for required system features.
	* configure: Generate.
	* acconfig.h: New file.
	* config.h.in: Generate.
	* Makefile.in: Renamed from Makefile.
	* COPYING: Import from a recent GNU package.
	* config.guess: Likewise.
	* config.sub: Likewise.
	* install-sh: Likewise.
	* Makefile: Remove.
	* config.h: Likewise. | 
|  | * eyal1.c: New file; contributed by Eyal Lebedinsky
	<eyal@eyal.emu.id.au>. |