| Age | Commit message (Collapse) | Author | 
 | 
* 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).
 | 
 | 
* eyal1.c: New file; contributed by Eyal Lebedinsky
	<eyal@eyal.emu.id.au>.
 | 
 | 
* exit2.c (func): Return a value.
        (main): Call the right thread entry function.
 | 
 | 
 | 
 | 
 | 
 | 
* exit2.c (main): Fix size of pthread_t array.
 | 
 | 
 | 
 | 
* exit2.c: New file; test pthread_exit() harder.
 | 
 | 
* exit1.c: New file; test pthread_exit().
 | 
 | 
 |