| Age | Commit message (Collapse) | Author | 
|---|
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | tests/benchmarks. | 
|  |  | 
|  |  | 
|  | with a recursive mutex that was locked by the current thread, the
function was failing with a success return code. | 
|  | exit. | 
|  |  | 
|  |  | 
|  |  | 
|  | a non-cancelable sem_wait() function. This is consistent with the
        way that pthread_mutex_timedlock.c does it.
        (pthread_mutex_lock): Use ptw32_semwait() instead of sem_wait(). | 
|  | * pthread_mutex_trylock.c: Should return EBUSY rather than EDEADLK.
        * pthread_mutex_destroy.c: Remove redundant ownership test (the
        trylock call does this for us); do not destroy a recursively locked
        mutex. | 
|  | * pthread_cond_destroy.c (pthread_cond_destroy):
        When two different threads exist, and one is attempting to
        destroy a condition variable while the other is attempting to
        initialize a condition variable that was created with
        PTHREAD_COND_INITIALIZER, a deadlock can occur. Shrink
        the ptw32_cond_list_lock critical section to fix it. | 
|  |  | 
|  | Remove code designed to avoid/prevent spurious wakeup
  problems. It is believed that the sem_timedwait() call
  is consuming a CV signal that it shouldn't and this is
  breaking the avoidance logic. | 
|  | unreasonable abstime values - that would result in
  unexpected timeout values.
* w32_CancelableWait.c (ptw32_cancelable_wait):
  Tighten up return value checking and add comments. | 
|  |  | 
|  |  | 
|  | * pthread.h: Conditionally added some #defines from config.h
        needed when not building the library. e.g. NEED_ERRNO, NEED_SEM.
        (PTW32_DLLPORT): Now only defined if _DLL defined.
        (_errno): Compiler directive was incorrectly including prototype.
        * sched.h: Conditionally added some #defines from config.h
        needed when not building the library.
        * semaphore.h: Replace an instance of NEED_SEM that should
        have been NEED_ERRNO. This change currently has nil effect.
        * GNUmakefile: Correct some recent changes.
        * Makefile: Add rule to generate pre-processor output. | 
|  | exit() rather than pthread_exit(). Add comments to explain
        why.
        * rwlock2_t.c: New test.
        * rwlock3_t.c: New test.
        * rwlock4_t.c: New test.
        * rwlock5_t.c: New test.
        * rwlock6_t.c: New test.
        * rwlock6_t2.c: New test.
        * rwlock6.c (main): Swap thread and result variables
        to correspond to actual thread functions.
        * rwlock1.c: Change test description comment to correspond
        to the actual test. | 
|  |  | 
|  | critical section to solve deadlock problem.
        * pthread.c: Add all remaining C modules.
        * pthread.h: Use dllexport/dllimport attributes on functions
        to avoid using pthread.def.
        * sched.h: Likewise.
        * semaphore.h: Likewise.
        * GNUmakefile: Add new targets for single translation
        unit build to maximise inlining potential; generate
        pthread.def automatically.
        * Makefile: Likewise, but no longer uses pthread.def. | 
|  |  | 
|  |  | 
|  |  | 
|  | conditional compilation; refinements; bug fixes. See the ChangeLog. | 
|  | cancelation point. Deferred cancels will interrupt the
        wait. | 
|  | to disable cancelation at the start of a thread's cancelation
	run to prevent double cancelation. The main problem
	arises if a thread is canceling and then receives a subsequent
	async cancel request.
	* private.c: Likewise.
	* condvar.c: Place pragmas around cleanup_push/pop to turn
	off inline optimisation (/Obn where n>0 - MSVC only). Various
	optimisation switches in MSVC turn this on, which interferes with
	the way that cleanup handlers are run in C++ EH and SEH
	code. Application code compiled with inline optimisation must
	also wrap cleanup_push/pop blocks with the pragmas, e.g.
	  #pragma inline_depth(0)
	  pthread_cleanup_push(...)
	    ...
	  pthread_cleanup_pop(...)
	  #pragma inline_depth(8)
	* rwlock.c: Likewise.
	* mutex.c: Remove attempts to inline some functions.
	* signal.c: Modify misleading comment.
tests/
	* mutex8: New test.
	* mutex8n: New test.
	* mutex8e: New test.
	* mutex8r: New test.
	* cancel6a: New test.
	* cancel6d: New test.
	* cleanup0.c: Add pragmas for inline optimisation control.
	* cleanup1.c: Add pragmas for inline optimisation control.
	* cleanup2.c: Add pragmas for inline optimisation control.
	* cleanup3.c: Add pragmas for inline optimisation control.
	* condvar7.c: Add pragmas for inline optimisation control.
	* condvar8.c: Add pragmas for inline optimisation control.
	* condvar9.c: Add pragmas for inline optimisation control. | 
|  | for systems that define NEED_SEM (e.g. early WinCE).
        * mutex.c (pthread_mutex_timedlock): Return ENOTSUP
        for systems that define NEED_SEM since they don't
        have sem_trywait(). |