summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
1998-07-22Wed Jul 22 00:16:22 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* attr.c, implement.h, pthread.h, ChangeLog: Resolve CVS merge conflicts. * private.c (_pthread_find_thread_entry): Changes to return type to support leaner _pthread_threads_table[] which now only stores _pthread_thread_thread_t *. (_pthread_new_thread_entry): Internal changes. (_pthread_delete_thread_entry): Internal changes to avoid contention. Calling routines changed accordingly. * pthread.h: Modified cleanup macros to use new generic push and pop. Added destructor and atfork stacks to _pthread_threads_thread_t. * cleanup.c (_pthread_handler_push, _pthread_handler_pop, _pthread_handler_pop_all): Renamed cleanup push and pop routines and made generic to handle destructors and atfork handlers as well. * create.c (_pthread_start_call): New function is a wrapper for all new threads. It allows us to do some cleanup when the thread returns, ie. that is otherwise only done if the thread is cancelled. * exit.c (_pthread_vacuum): New function contains code from pthread_exit() that we need in the new _pthread_start_call() as well. * implement.h: Various additions and minor changes. * pthread.h: Various additions and minor changes. Change cleanup handler macros to use generic handler push and pop functions. * attr.c: Minor mods to all functions. (is_attr): Implemented missing function. * create.c (pthread_create): More clean up. * private.c (_pthread_find_thread_entry): Implement. (_pthread_delete_thread_entry): Implement. (_pthread_new_thread_entry): Implement. These functions manipulate the implementations internal thread table and are part of general code cleanup and modularisation. They replace _pthread_getthreadindex() which was removed. * exit.c (pthread_exit): Changed to use the new code above. * pthread.h: Add cancelability constants. Update comments.
1998-07-22 * ChangeLog: Update.bje
1998-07-221998-07-22 Ben Elliston <bje@cygnus.com>bje
* implement.h (_pthread_attr_t): Moved to a public definition in pthread.h. There was little gain in hiding these details.
1998-07-22i1998-07-22 Ben Elliston <bje@cygnus.com>bje
* attr.c (pthread_setstacksize): Update test of attr argument. (pthread_getstacksize): Likewise. (pthread_setstackaddr): Likewise. (pthread_getstackaddr): Likewise. (pthread_attr_init): No need to allocate any storage. (pthread_attr_destroy): No need to free any storage. * mutex.c (is_attr): Not likely to be needed; remove. (remove_attr): Likewise. (insert_attr): Likewise. * pthread.h (pthread_attr_t): Moved here from implement.h. * implement.h (_pthread_mutexattr_t): Moved to a public definition in pthread.h. There was little gain in hiding these details. (_pthread_condattr_t): Likewise.
1998-07-221998-07-22 Ben Elliston <bje@cygnus.com>bje
* pthread.h (pthread_atfork): Add function prototype. * fork.c (pthread_atfork): Preliminary implementation. (_pthread_fork): Likewise.
1998-07-22 * ChangeLog: Update.bje
1998-07-22New files.bje
1998-07-221998-07-22 Ben Elliston <bje@cygnus.com>bje
* exit2.c (main): Fix size of pthread_t array.
1998-07-21Wed Jul 22 00:16:22 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* cleanup.c (_pthread_cleanup_push): Implement. (_pthread_cleanup_pop): Implement. (_pthread_do_cancellation): Implement. These are private to the implementation. The real cleanup functions are macros. See below. * pthread.h (pthread_cleanup_push): Implement as a macro. (pthread_cleanup_pop): Implement as a macro. Because these are macros which start and end a block, the POSIX scoping requirement is observed. See the comment in the file. * exit.c (pthread_exit): Refine the code. * create.c (pthread_create): Code cleanup. * implement.h (RND_SIZEOF): Add RND_SIZEOF(T) to round sizeof(T) up to multiple of DWORD. Add function prototypes. * private.c (_pthread_getthreadindex): "*thread" should have been "thread". Detect empty slot fail condition.
1998-07-20 * ChangeLog: Update.bje
1998-07-201998-07-20 Ben Elliston <bje@cygnus.com>bje
* misc.c (pthread_once): Don't use a per-application flag and mutex--make `pthread_once_t' contain these elements in their structure. The earlier version had incorrect semantics.
1998-07-201998-07-20 Ben Elliston <bje@cygnus.com>bje
* pthread.h (_pthread_once_flag): Remove. (_pthread_once_lock): Remove. (pthread_once): Add function prototype. (pthread_once_t): Define this type.
1998-07-19 * ChangeLog: Update.bje
1998-07-191998-07-20 Ben Elliston <bje@cygnus.com>bje
* misc.c (pthread_once): Implement.
1998-07-191998-07-20 Ben Elliston <bje@cygnus.com>bje
* pthread.h (_pthread_once_flag): Add new variable. (_pthread_once_lock): Add new mutex lock to ensure integrity of access to _pthread_once_flag.
1998-07-19Mon Jul 20 02:31:05 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* private.c (_pthread_getthreadindex): Implement.
1998-07-19Mon Jul 20 02:31:05 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>rpj
* 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 <rpj@ixobrychus.canberra.edu.au> * 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().
1998-07-19 * ChangeLog: Update.bje
1998-07-191998-07-19 Ben Elliston <bje@cygnus.com>bje
* condvar.c (pthread_cond_wait): Generalise. Moved from here .. (cond_wait): To here. (pthread_cond_timedwait): Implement; use generalised cond_wait().
1998-07-19 * ChangeLog: Update.bje
1998-07-191998-07-19 Ben Elliston <bje@cygnus.com>bje
* tsd.c (pthread_key_create): Implement. (pthread_setspecific): Likewise. (pthread_getspecific): Likewise. (pthread_key_delete): Likewise.
1998-07-191998-07-19 Ben Elliston <bje@cygnus.com>bje
* pthread.h (pthread_key_t): Define this type. (pthread_key_create): Add function prototype. (pthread_setspecific): Likewise. (pthread_getspecific): Likwise. (pthread_key_delete): Likewise.
1998-07-191998-07-19 Ben Elliston <bje@cygnus.com>bje
* mutex.c (pthread_mutex_trylock): Return ENOSYS if this function is called on a Win32 platform which is not Windows NT.
1998-07-17 * README: Grammar fix.bje
1998-07-17 * ChangeLog: Update.bje
1998-07-171998-07-18 Ben Elliston <bje@cygnus.com>bje
* condvar.c (pthread_condattr_init): Do not attempt to malloc any storage; none is needed now that condattr_t is an empty struct. (pthread_condattr_destory): Likewise; do not free storage. (pthread_condattr_setpshared): No longer supported; return ENOSYS. (pthread_condattr_getpshared): Likewise. (pthread_cond_init): Implement with help from Douglas Schmidt. Remember to initialise the cv's internal mutex. (pthread_cond_wait): Likewise. (pthread_cond_signal): Likewise. (pthread_cond_broadcast): Likewise. (pthread_cond_timedwait): Preliminary implementation, but I need to see some API documentation for `WaitForMultipleObject'. (pthread_destory): Implement.
1998-07-171998-07-18 Ben Elliston <bje@cygnus.com>bje
* pthread.h (pthread_cond_t): Fix for u_int. Do not assume that the mutex contained withing the pthread_cond_t structure will be a critical section. Use our new POSIX type!
1998-07-171998-07-18 Ben Elliston <bje@cygnus.com>bje
* pthread.h (pthread_cond_init): Add function protoype. (pthread_cond_broadcast): Likewise. (pthread_cond_signal): Likewise. (pthread_cond_timedwait): Likewise. (pthread_cond_wait): Likewise. (pthread_cond_destroy): Likewise. (pthread_cond_t): Define this type.
1998-07-171998-07-18 Ben Elliston <bje@cygnus.com>bje
* implement.h (_pthread_condattr_t): Remove shared attribute.
1998-07-17 * ChangeLog: Update.bje
1998-07-171998-07-17 Ben Elliston <bje@cygnus.com>bje
* mutex.c (pthread_mutex_init): Use InitializeCritcalSection(). (pthread_mutex_destroy): Use DeleteCriticalSection(). (pthread_mutex_lock): Use EnterCriticalSection(). (pthread_mutex_trylock): Use TryEnterCriticalSection(). This is not supported by Windows 9x, but trylock is a hack anyway, IMHO. (pthread_mutex_unlock): Use LeaveCriticalSection().
1998-07-171998-07-17 Ben Elliston <bje@cygnus.com>bje
* pthread.h (PTHREADS_PROCESS_PRIVATE): Remove. (PTHREAD_PROCESS_SHARED): Likewise. No support for mutexes shared across processes for now. (pthread_mutex_t): Use a Win32 CRITICAL_SECTION type for better performance.
1998-07-171998-07-17 Ben Elliston <bje@cygnus.com>bje
* mutex.c (pthread_mutexattr_init): No need to malloc any storage; the attributes structure is now empty. (pthread_mutexattr_destroy): This is now a nop.
1998-07-17 * ChangeLog: Update.bje
1998-07-171998-07-17 Ben Elliston <bje@cygnus.com>bje
* implement.h (_pthread_mutexattr_t): Remove shared attribute.
1998-07-171998-07-17 Ben Elliston <bje@cygnus.com>bje
* mutex.c (pthread_mutexattr_setpshared): This optional function is no longer supported, since we want to implement POSIX mutex variables using the much more efficient Win32 critical section primitives. Critical section objects in Win32 cannot be shared between processes. (pthread_mutexattr_getpshared): Likewise.
1998-07-13 * ChangeLog: Update.bje
1998-07-13 *ChangeLog: Update.bje
1998-07-131998-07-14 Ben Elliston <bje@cygnus.com>bje
* attr.c (pthread_attr_setstacksize): Implement. (pthread_attr_getstacksize): Likewise. (pthread_attr_setstackaddr): Likewise. (pthread_attr_getstackaddr): Likewise. (pthread_attr_init): Likewise. (pthread_attr_destroy): Likewise.
1998-07-131998-07-14 Ben Elliston <bje@cygnus.com>bje
* pthread.h (pthread_attr_init): Add function prototype. (pthread_attr_destroy): Likewise. (pthread_attr_setstacksize): Likewise. (pthread_attr_getstacksize): Likewise. (pthread_attr_setstackaddr): Likewise. (pthread_attr_getstackaddr): Likewise.
1998-07-131998-07-14 Ben Elliston <bje@cygnus.com>bje
* condvar.c (pthread_condattr_init): Add `_cond' to function name.
1998-07-131998-07-14 Ben Elliston <bje@cygnus.com>bje
* mutex.c (pthread_mutex_lock): Add `_mutex' to function name. (pthread_mutex_trylock): Likewise. (pthread_mutex_unlock): Likewise.
1998-07-131998-07-14 Ben Elliston <bje@cygnus.com>bje
* pthread.h (pthread_condattr_setpshared): Fix typo.
1998-07-12See the ChangeLog.rpj
1998-07-12 * ChangeLog: Update.bje
1998-07-12 * mutex.c (pthread_mutexattr_destory): Simplify flow of control.bje
1998-07-121998-07-13 Ben Elliston <bje@cygnus.com>bje
* condvar.c (pthread_condattr_init): Implement. (pthread_condattr_destroy): Likewise. (pthread_condattr_setpshared): Likewise. (pthread_condattr_getpshared): Likewise.
1998-07-121998-07-13 Ben Elliston <bje@cygnus.com>bje
* pthread.h (pthread_condattr_t): Define this type. (pthread_condattr_init): Likewise. (pthread_condattr_destroy): Likewise. (pthread_condattr_setpshared): Likewise. (pthread_condattr_getpshared): Likewise.
1998-07-12 * ChangeLog: Update.bje
1998-07-121998-07-13 Ben Elliston <bje@cygnus.com>bje
* implement.h (PTHREADS_THREADS_MAX): Remove trailing semicolon. (PTHREADS_STACK_MIN): Specify; needs confirming. (_pthreads_attr_t): Define this type. (_pthreads_condattr_t): Likewise.