diff options
author | Robert Collins <rbtcollins@hotmail.com> | 2001-09-29 09:01:01 +0000 |
---|---|---|
committer | Robert Collins <rbtcollins@hotmail.com> | 2001-09-29 09:01:01 +0000 |
commit | 86336f4fea17caf02ad079150589393e70cb4d8f (patch) | |
tree | acf788af2b6b0fd39d63739960418d0300812ea0 /winsup/cygwin/thread.h | |
parent | a1dc0932f42604d6bd51ebf13f668e8e6debf409 (diff) | |
download | cygnal-86336f4fea17caf02ad079150589393e70cb4d8f.tar.gz cygnal-86336f4fea17caf02ad079150589393e70cb4d8f.tar.bz2 cygnal-86336f4fea17caf02ad079150589393e70cb4d8f.zip |
Sat Sep 29 18:26:00 2001 Robert Collins <rbtcollins@hotmail.com>
* pthread.cc (pthread_cond_timedwait): Deleted - exported from thread.cc.
(pthread_cond_wait): Deleted - exported from thread.cc.
* thread.cc (pthread_cond::BroadCast): Update to use the new syntax for
verifyable_object_isvalid ().
(pthread_cond::Signal): Ditto. Also attempt to fix the lost signal race
with pthread_cond::TimedWait().
(check_valid_pointer): Change definiton to void const *.
(verifyable_object_isvalid): Add new parameter to allow identification of
static initializers, and return a enum rather than magic numbers.
(__pthread_create): Ditto.
(__pthread_cleanup): Ditto.
(__pthread_attr_init): Ditto.
(__pthread_attr_getinheritsched): Ditto.
(__pthread_attr_getschedparam): Ditto.
(__pthread_attr_getschedpolicy): Ditto.
(__pthread_attr_getscope): Ditto.
(__pthread_attr_setdetachstate): Ditto.
(__pthread_attr_getdetachstate): Ditto.
(__pthread_attr_setinheritsched): Ditto.
(__pthread_attr_setschedparam): Ditto.
(__pthread_attr_setschedpolicy): Ditto.
(__pthread_attr_setscope): Ditto.
(__pthread_attr_setstacksize): Ditto.
(__pthread_attr_getstacksize): Ditto.
(__pthread_attr_destroy): Ditto.
(__pthread_join): Ditto.
(__pthread_detach): Ditto.
(__pthread_suspend): Ditto.
(__pthread_continue): Ditto.
(__pthread_getschedparam): Ditto.
(__pthread_getsequence_np): Ditto.
(__pthread_key_create): Ditto.
(__pthread_key_delete): Ditto.
(__pthread_setschedparam): Ditto.
(__pthread_setspecific): Ditto.
(__pthread_getspecific): Ditto.
(__pthread_cond_destroy): Ditto.
(__pthread_cond_init): Ditto.
(__pthread_cond_broadcast): Ditto.
(__pthread_cond_signal): Ditto.
(__pthread_condattr_init): Ditto.
(__pthread_condattr_getpshared): Ditto.
(__pthread_condattr_setpshared): Ditto.
(__pthread_condattr_destroy): Ditto.
(__pthread_kill): Ditto.
(__pthread_mutex_init): Ditto.
(__pthread_mutex_getprioceiling): Ditto.
(__pthread_mutex_lock): Ditto.
(__pthread_mutex_trylock): Ditto.
(__pthread_mutex_unlock): Ditto.
(__pthread_mutex_destroy): Ditto.
(__pthread_mutex_setprioceiling): Ditto.
(__pthread_mutexattr_getprotocol): Ditto.
(__pthread_mutexattr_getpshared): Ditto.
(__pthread_mutexattr_gettype): Ditto.
(__pthread_mutexattr_init): Ditto.
(__pthread_mutexattr_destroy): Ditto.
(__pthread_mutexattr_setprotocol): Ditto.
(__pthread_mutexattr_setprioceiling): Ditto.
(__pthread_mutexattr_getprioceiling): Ditto.
(__pthread_mutexattr_setpshared): Ditto.
(__pthread_mutexattr_settype): Ditto.
(__sem_init): Ditto.
(__sem_destroy): Ditto.
(__sem_wait): Ditto.
(__sem_trywait): Ditto.
(__sem_post): Ditto.
(__pthread_cond_dowait): New function, contains core logic from
__pthread_cond_wait and __pthread_cond_timedwait. Decrement (*cond)->waiting
before reentering the cond access mutex to allow detection of lost signals.
(__pthread_cond_timedwait): Rename to pthread_cond_timedwait, and call
__pthread_cond_dowait after calculating the wait length.
(__pthread_cond_wait): Rename to pthread_cond_wait, and call
__pthread_cond_dowait.
* thread.h: New enum for use with verifyable_object_isvalid.
Remove the extern exporting of __pthread_cond_timedwait and __pthread_cond_wait.
Diffstat (limited to 'winsup/cygwin/thread.h')
-rw-r--r-- | winsup/cygwin/thread.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/winsup/cygwin/thread.h b/winsup/cygwin/thread.h index 5fa9282f1..c724bea14 100644 --- a/winsup/cygwin/thread.h +++ b/winsup/cygwin/thread.h @@ -164,7 +164,15 @@ public: ~verifyable_object (); }; -int verifyable_object_isvalid (void const *, long); +typedef enum +{ + VALID_OBJECT, + INVALID_OBJECT, + VALID_STATIC_OBJECT +} verifyable_object_state; + +verifyable_object_state verifyable_object_isvalid (void const *, long); +verifyable_object_state verifyable_object_isvalid (void const *, long, void *); class pthread_key:public verifyable_object { @@ -440,10 +448,6 @@ int __pthread_cond_init (pthread_cond_t * cond, const pthread_condattr_t * attr); int __pthread_cond_signal (pthread_cond_t * cond); int __pthread_cond_broadcast (pthread_cond_t * cond); -int __pthread_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, - const struct timespec *abstime); -int __pthread_cond_wait (pthread_cond_t * cond, pthread_mutex_t * mutex); int __pthread_condattr_init (pthread_condattr_t * condattr); int __pthread_condattr_destroy (pthread_condattr_t * condattr); int __pthread_condattr_getpshared (const pthread_condattr_t * attr, |