summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
1999-01-03Mon Jan 4 11:23:40 1999 Ross Johnson <rpj@ixobrychus.canberra.edu.au>bossom-merge-99-01-04bossom-merge-98-12-08rpj
* all: No code changes, just cleanup. - remove #if 0 /* Pre Bossom */ enclosed code. - Remove some redundant #includes. * pthread.h: Update implemented/unimplemented routines list. * Tag the bossom merge branch getting ready to merge back to main trunk.
1999-01-01Wed Dec 30 11:22:44 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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.
1998-12-28With this update I'm able to build the library and build and run therpj
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.
1998-12-22Sun Dec 20 14:51:58 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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.
1998-12-101998-12-11 Ben Elliston <bje@toilet.to.cygnus.com>bje
* README: Update info about subscribing to the mailing list.
1998-12-09New file.rpj
Q 1 How do I get pthreads-win32 to link under Cygwin32 or Mingw32?
1998-12-06Mon Dec 7 09:44:40 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>final-pre-bossomrpj
* dll.c (PthreadsEntryPoint): Cast return value of GetProcAddress to resolve compile warning from MSVC.
1998-12-06Sun Dec 6 21:54:35 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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.
1998-12-06Sun Dec 6 21:54:35 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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.
1998-12-06Thu Dec 3 13:32:00 1998 Ross Johnson <rpj@ise.canberra.edu.au>rpj
* README: Correct cygwin32 compatibility statement.
1998-12-06As well as patches from Anders, this commit includes some older changesrpj
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.
1998-10-291998-10-30 Ben Elliston <bje@cygnus.com>bje
* condvar.c (cond_wait): Fix semantic error. Test for equality instead of making an assignment.
1998-10-29Fri Oct 30 15:15:50 1998 Ross Johnson <rpj@swan.canberra.edu.au>rpj
* 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".
1998-10-22Thu Oct 22 21:44:44 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* tsd.c: Add description of pthread_key_delete() from the standard as a comment.
1998-10-15Thu Oct 15 17:42:37 1998 Ross Johnson <rpj@swan.canberra.edu.au>rpj
* tsd1.c (mythread): Fix some casts and add some diagnostics. Fix inverted conditional.
1998-10-14Thu Oct 15 14:05:01 1998 Ross Johnson <rpj@swan.canberra.edu.au>rpj
* private.c (_pthread_new_thread): Remove init of destructorstack. No longer an element of pthread_t.
1998-10-14Thu Oct 15 14:05:01 1998 Ross Johnson <rpj@swan.canberra.edu.au>rpj
* 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.
1998-10-14Thu Oct 15 14:05:01 1998 Ross Johnson <rpj@swan.canberra.edu.au>rpj
* tsd.c (pthread_setspecific): Fix type declaration and cast. (pthread_getspecific): Ditto.
1998-10-14Thu Oct 15 11:53:21 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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.
1998-10-14Wed Oct 14 21:09:24 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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.
1998-10-14Mon Oct 12 00:00:44 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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.
1998-10-11Mon Oct 12 02:12:29 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* tsd1.c: New. Test TSD using 1 key and 2 threads.
1998-10-06Update.bje
1998-10-061998-10-06 Ben Elliston <bje@cygnus.com>bje
* condvar.c (cond_wait): Use POSIX, not Win32 mutex calls. (pthread_cond_broadcast): Likewise. (pthread_cond_signal): Likewise.
1998-10-06Move comment to a more obvious position.bje
1998-10-041998-10-05 Ben Elliston <bje@cygnus.com>bje
* pthread.def: Update. Some functions aren't available yet, others are macros in <pthread.h>. * tests/join.c: Remove; useless.
1998-10-04Mon Oct 5 14:25:08 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* pthread.def: New file for building the DLL.
1998-10-041998-10-05 Ben Elliston <bje@cygnus.com>bje
* 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.
1998-10-041998-10-05 Ben Elliston <bje@cygnus.com>bje
* 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.
1998-10-041998-10-05 Ben Elliston <bje@cygnus.com>bje
* 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.
1998-10-04Update.bje
1998-10-041998-10-05 Ben Elliston <bje@cygnus.com>bje
* 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.
1998-10-041998-10-04 Ben Elliston <bje@cygnus.com>bje
* tests/mutex2.c: Test pthread_mutex_trylock(). Passes. * tests/mutex1.c (main): Eliminate warning.
1998-10-041998-10-04 Ben Elliston <bje@cygnus.com>bje
* tests/mutex1.c: New basic test for mutex functions (it passes).
1998-10-041998-10-04 Ben Elliston <bje@cygnus.com>bje
* configure.in: Test for __stdcall, not _stdcall. Typo. * configure: Regenerate.
1998-10-041998-10-04 Ben Elliston <bje@cygnus.com>bje
* attr.c (pthread_attr_setstackaddr): Remove FIXME comment. Win32 does know about ENOSYS after all. (pthread_attr_setstackaddr): Likewise.
1998-10-031998-10-03 Ben Elliston <bje@cygnus.com>bje
* create.c (_pthread_start_call): Add STDCALL prefix.
1998-10-03Use #if, not #ifdef.bje
1998-10-03Correct oversight in AC_DEFINE logic.bje
1998-10-031998-10-03 Ben Elliston <bje@cygnus.com>bje
* config.h.in: Regenerate.
1998-10-031998-10-03 Ben Elliston <bje@cygnus.com>bje
* configure.in: Test for the `_stdcall' keyword. Define `STDCALL' to `_stdcall' if we have it, null otherwise. * configure: Regenerate. * acconfig.h (STDCALL): New define.
1998-10-031998-10-03 Ben Elliston <bje@cygnus.com>bje
* mutex.c (pthread_mutex_init): Correct function signature.
1998-10-031998-10-03 Ben Elliston <bje@cygnus.com>bje
* 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.
1998-10-031998-10-03 Ben Elliston <bje@cygnus.com>bje
* pthread.h: No need to include <unistd.h>. It doesn't even exist on Win32! Again, an artifact of cross-compilation.
1998-10-031998-10-03 Ben Elliston <bje@cygnus.com>bje
* 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.
1998-10-021998-10-02 Ben Elliston <bje@cygnus.com>bje
* COPYING: Remove. * COPYING.LIB: Add. This library is under the LGPL.
1998-09-25New file.bje
1998-09-25Update.bje
1998-09-13 * ChangeLog: Fix typo.bje
1998-09-131998-09-13 Ben Elliston <bje@cygnus.com>bje
* 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.