diff options
author | rpj <rpj> | 2001-02-10 08:35:29 +0000 |
---|---|---|
committer | rpj <rpj> | 2001-02-10 08:35:29 +0000 |
commit | 1c38dfed3806cf142ebb0b1be473c88c5b2ac929 (patch) | |
tree | 0fa36b935802dfcfb1d4dfd28b3e3d791e49bc8d /implement.h | |
parent | 1648c7a97f27d10ad302c6141562ece01065e1d7 (diff) |
2001-02-09 Ross Johnson <rpj@setup1.ise.canberra.edu.au>exp-2001-02-10-passed
* nonportable.c (pthread_mutex_setdefaulttype_np): New
function for changing the default mutex type.
* mutex.c (ptw32_InitializeCriticalSection): Removed.
(ptw32_InitializeCriticalSection): Removed.
(ptw32_InitializeCriticalSection): Removed.
(ptw32_InitializeCriticalSection): Removed.
(ptw32_InitializeCriticalSection): Removed.
(pthread_mutex_init): Apply Thomas Pfaff's original
patches; remove use of critical sections and adapt
for different mutex types (see log entry for 2001-01-10).
The disadvantage of using critical sections is that
they don't appear to be sharable between processes.
This implementation provides the opportunity to place
mutex objects in shared memory. Thread priority
determines the order in which waiting threads acquire
the mutex although the implementation includes a
mechanism to prevent threads hogging the mutex through
successive unlock/lock operations.
(pthread_mutex_destroy): Likewise.
(pthread_mutex_lock): Likewise.
(pthread_mutex_unlock): Likewise.
(pthread_mutex_trylock): Likewise.
* pthread.h (rand_r): Add redundant test of '_seed' arg
to avoid "unused variable" warnings. Any good compiler
will optimise the test away anyway.
Diffstat (limited to 'implement.h')
-rw-r--r-- | implement.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/implement.h b/implement.h index a1a52f8..8297a46 100644 --- a/implement.h +++ b/implement.h @@ -127,11 +127,14 @@ struct pthread_mutexattr_t_ { }; struct pthread_mutex_t_ { - int lock_idx; - int try_lock; + long lock_idx; + long try_lock; int pshared; int type; pthread_t owner; + long waiters; /* These last elements ensure fairness */ + pthread_t lastOwner; /* and guard against canceled threads. */ + pthread_t lastWaiter; }; struct pthread_key_t_ { |