Age | Commit message (Collapse) | Author |
|
* 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.
|
|
POSIX TSD on top of Win32 TLS.
|
|
* windows.h: No longer needed; remove.
* windows.c: Likewise.
|
|
|
|
* {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.
|
|
* Makefile (LIB): Define.
(clean): Define target.
(all): Build a library not just the object files.
* pthread.h: Provide a definition for struct timespec if we don't
already have one.
* windows.c (TlsGetValue): Bug fix.
|
|
|
|
Thu Aug 6 15:19:22 1998 Ross Johnson <rpj@swan.canberra.edu.au>
* create.c (pthread_create): Typecast (HANDLE) NULL.
Typecast (unsigned (*)(void *)) start_routine.
|
|
* condvar.c (pthread_cond_init): Add address-of operator & to
arg 1 of pthread_mutex_init() call.
(pthread_cond_destroy): Add address-of operator & to
arg 1 of pthread_mutex_destroy() call.
|
|
* cleanup.c (_pthread_destructor_pop_all): Add (int) cast to
pthread_getspecific() arg.
(_pthread_destructor_pop): Add (void *) cast to "if" conditional.
(_pthread_destructor_push): Add (void *) cast to
_pthread_handler_push() "key" arg.
(malloc.h): Add include.
|
|
* implement.h (_pthread_destructor_pop): Add prototype.
* tsd.c (implement.h): Add include.
|
|
* sync.c (pthread_join): Remove target_thread_mutex and it's
initialisation. Rename getdetachedstate to getdetachstate.
Remove unused variable "exitcode".
(pthread_detach): Remove target_thread_mutex and it's
initialisation. Rename getdetachedstate to getdetachstate.
Rename setdetachedstate to setdetachstate.
|
|
* signal.c (pthread_sigmask): Rename SIG_SET to SIG_SETMASK.
Cast "set" to (long *) in assignment to passify compiler warning.
Add address-of operator & to thread->attr.sigmask in memcpy() call
and assignment.
(pthread_sigmask): Add address-of operator & to thread->attr.sigmask
in memcpy() call and assignment.
|
|
* windows.h (THREAD_PRIORITY_ERROR_RETURN): Add.
(THREAD_PRIORITY_LOWEST): Add.
(THREAD_PRIORITY_HIGHEST): Add.
* sched.c (is_attr): Add function.
(implement.h): Add include.
(pthread_setschedparam): Rename all instances of "sched_policy"
to "sched_priority".
(pthread_getschedparam): Ditto.
|
|
* private.c (_pthread_delete_thread): Fix typo. Add missing ';'.
* global.c (_pthread_virgins): Change types from pointer to
array pointer.
(_pthread_reuse): Ditto.
(_pthread_win32handle_map): Ditto.
(_pthread_threads_mutex_table): Ditto.
* implement.h(_pthread_virgins): Change types from pointer to
array pointer.
(_pthread_reuse): Ditto.
(_pthread_win32handle_map): Ditto.
(_pthread_threads_mutex_table): Ditto.
* private.c (_pthread_delete_thread): Fix "entry" should be "thread".
* misc.c (pthread_self): Add extern for _pthread_threadID_TlsIndex.
* global.c: Add comment.
* misc.c (pthread_once): Fix member -> dereferences.
Change _pthread_once_flag to once_control->flag in "if" test.
|
|
* implement.h(_pthread_virgins): Add extern.
(_pthread_virgin_next): Ditto.
(_pthread_reuse): Ditto.
(_pthread_reuse_top): Ditto.
(_pthread_win32handle_map): Ditto.
(_pthread_threads_mutex_table): Ditto.
* global.c (_pthread_virgins): Changed from array to pointer.
Storage allocation for the array moved into dll.c.
(_pthread_reuse): Ditto.
(_pthread_win32handle_map): Ditto.
(_pthread_threads_mutex_table): Ditto.
* dll.c (PthreadsEntryPoint): Set up thread admin storage when
DLL is loaded.
* fork.c (pthread_atfork): Fix function pointer arg to all
_pthread_handler_push() calls. Change "arg" arg to NULL in child push.
* exit.c: Add windows.h and process.h includes.
(_pthread_exit): Add local detachstate declaration.
(_pthread_exit): Fix incorrect name for pthread_attr_getdetachstate().
* pthread.h (_POSIX_THREAD_ATTR_STACKSIZE): Move from global.c
(_POSIX_THREAD_ATTR_STACKADDR): Ditto.
* create.c (pthread_create): Fix #if should be #ifdef.
(_pthread_start_call): Remove usused variables.
* process.h: Create.
* windows.h: Move _beginthreadex and _endthreadex into
process.h
Mon Aug 3 21:19:57 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>
* condvar.c (pthread_cond_init): Add NULL attr to
pthread_mutex_init() call - default attributes will be used.
(cond_wait): Fix typo.
(cond_wait): Fix typo - cv was ev.
(pthread_cond_broadcast): Fix two identical typos.
* cleanup.c (_pthread_destructor_pop_all): Remove _ prefix from
PTHREAD_DESTRUCTOR_ITERATIONS.
* pthread.h: Move _POSIX_* values into posix.h
* pthread.h: Fix typo in pthread_mutex_init() prototype.
* attr.c (pthread_attr_init): Fix error in priority member init.
* windows.h (THREAD_PRIORITY_NORMAL): Add.
* pthread.h (sched_param): Add missing ';' to struct definition.
* attr.c (pthread_attr_init): Remove obsolete pthread_attr_t
member initialisation - cancelstate, canceltype, cancel_pending.
(is_attr): Make arg "attr" a const.
* implement.h (_PTHREAD_HANDLER_POP_LIFO): Remove definition.
(_PTHREAD_HANDLER_POP_FIFO): Ditto.
(_PTHREAD_VALID): Add missing newline escape (\).
(_pthread_handler_node): Make element "next" a pointer.
|
|
* windows.h: Remove duplicate TlsSetValue() prototype. Add
TlsGetValue() prototype.
(FALSE): Define.
(TRUE): Likewise.
Add forgotten errno values. Guard against multiple #includes.
* windows.c: New file. Implement stubs for Win32 functions.
* Makefile (SRCS): Remove. Not explicitly needed.
(CFLAGS): Add -Wall for all warnings with GCC.
|
|
* config.h: Create. This is a temporary stand-in for autoconf yet
to be done.
(HAVE_SIGNAL_H): Add.
* pthread.h: Minor rearrangement for temporary config.h.
|
|
* 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().
|
|
* implement.h (_pthread_handler_pop_all): Add prototype.
(_pthread_destructor_pop_all): Ditto.
* cleanup.c (_pthread_destructor_push): Implement. This is just a
call to _pthread_handler_push().
(_pthread_destructor_pop_all): Implement. This is significantly
different to _pthread_handler_pop_all().
|
|
* Makefile (SRCS): Create. Preliminary.
* windows.h: Create. Contains Win32 definitions for compile
testing. This is just a standin for the real one.
* pthread.h (SIG_UNBLOCK): Fix typo. Was SIG_BLOCK.
(windows.h): Add include. Required for CRITICAL_SECTION.
(pthread_cond_t): Move enum declaration outside of struct
definition.
(unistd.h): Add include - may be temporary.
* condvar.c (windows.h): Add include.
|
|
* implement.h (_PTHREAD_THIS): Remove - no longer required.
(_PTHREAD_STACK): Use pthread_self() instead of _PTHREAD_THIS.
|
|
* implement.h: Remove _pthread_find_entry() prototype.
* private.c: Extend comments.
Remove _pthread_find_entry() - no longer needed.
* create.c (_pthread_start_call): Add call to TlsSetValue() to
store the thread ID.
* dll.c (PthreadsEntryPoint): Implement. This is called
whenever a process loads the DLL. Used to initialise thread
local storage.
* implement.h: Add _pthread_threadID_TlsIndex.
Add ()s around _PTHREAD_VALID expression.
* misc.c (pthread_self): Re-implement using Win32 TLS to store
the threads own ID.
|
|
* private.c: Corrections in comments.
(_pthread_new_thread): Alter "if" flow to be more natural.
|
|
* cleanup.c (_pthread_handler_push): Same as below.
* create.c (pthread_create): Same as below.
* private.c (_pthread_new_thread): Rename "new" to "new_thread".
Since when has a C programmer been required to know C++?
|
|
* implement.h: Add _PTHREAD_VALID macro.
* sync.c (pthread_join): Modify to use the new thread
type and _pthread_delete_thread(). Rename "target" to "thread".
Remove extra local variable "target".
(pthread_detach): Ditto.
* signal.c (pthread_sigmask): Move init of "us" out of inner block.
Fix instance of "this" should have been "us". Rename "us" to "thread".
* sched.c (pthread_setschedparam): Modify to use the new thread
type.
(pthread_getschedparam): Ditto.
* private.c (_pthread_find_thread): Fix return type and arg.
* implement.h: Remove _PTHREAD_YES and _PTHREAD_NO.
(_pthread_new_thread): Add prototype.
(_pthread_find_thread): Ditto.
(_pthread_delete_thread): Ditto.
(_pthread_new_thread_entry): Remove prototype.
(_pthread_find_thread_entry): Ditto.
(_pthread_delete_thread_entry): Ditto.
( _PTHREAD_NEW, _PTHREAD_INUSE, _PTHREAD_EXITED, _PTHREAD_REUSE):
Add.
* create.c (pthread_create): Minor rename "us" to "new" (I need
these cues but it doesn't stop me coming out with some major bugs
at times).
Load start_routine and arg into the thread so the wrapper can
call it.
* exit.c (pthread_exit): Fix pthread_this should be pthread_self.
* cancel.c (pthread_setcancelstate): Change
_pthread_threads_thread_t * to pthread_t and init with
pthread_this().
(pthread_setcanceltype): Ditto.
|
|
* exit.c (_pthread_exit): Add new pthread_t arg.
Rename _pthread_delete_thread_entry to _pthread_delete_thread.
Rename "us" to "thread".
(pthread_exit): Call _pthread_exit with added thread arg.
|
|
* create.c (_pthread_start_call): Insert missing ")".
Add "us" arg to _pthread_exit() call.
(pthread_create): Modify to use new thread allocation scheme.
|
|
* private.c: Added detailed explanation of the new thread
allocation scheme.
(_pthread_new_thread): Totally rewritten to use
new thread allocation scheme.
(_pthread_delete_thread): Ditto.
(_pthread_find_thread): Obsolete.
|
|
* create.c (pthread_create): Start of rewrite. Not completed yet.
* private.c (_pthread_new_thread_entry): Start of rewrite. Not
complete.
* implement.h (_pthread_threads_thread): Rename, remove thread
member, add win32handle and ptstatus members.
(_pthread_t): Add.
* pthread.h: pthread_t is no longer mapped directly to a Win32
HANDLE type. This is so we can let the Win32 thread terminate and
reuse the HANDLE while pthreads holds it's own thread ID until
the last waiting join exits.
|