Age | Commit message (Collapse) | Author |
|
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.
|
|
* 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.
|
|
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.
|
|
* tsd.c: Add description of pthread_key_delete() from the
standard as a comment.
|
|
* 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.
|
|
POSIX TSD on top of Win32 TLS.
|
|
* {most}.c: Include <errno.h> to get POSIX error values.
* signal.c (pthread_sigmask): Only provide if HAVE_SIGSET_T is
defined.
* config.h: #undef features, don't #define them. This will be
generated by autoconf very soon.
|
|
* implement.h (_pthread_destructor_pop): Add prototype.
* tsd.c (implement.h): Add include.
|
|
* cleanup.c (_pthread_destructor_pop): Implement. Removes
destructors associated with a key without executing them.
(_pthread_destructor_pop_all): Add FIXME comment.
* tsd.c (pthread_key_delete): Add call to _pthread_destructor_pop().
|
|
|
|
* tsd.c (pthread_key_create): Update to properly associate
the destructor routine with the key.
* exit.c (_pthread_vacuum): Add call to
_pthread_destructor_pop_all().
|
|
* tsd.c (pthread_getspecific): Update comments.
|
|
* tsd.c (pthread_key_create): Implement.
(pthread_setspecific): Likewise.
(pthread_getspecific): Likewise.
(pthread_key_delete): Likewise.
|