* thread.cc (pthread::cancelable_wait): Rearrange slightly.

Add do_sig_wait parameter.  Wait for signal_arrived if set to true.
	Return WAIT_SIGNALED if signal arrived.
	(pthread_cond::wait): Accomodate change to pthread::cancelable_wait.
	(pthread::join): Ditto.
	(semaphore::_timedwait): Ditto.
	(semaphore::_wait): Ditto.  Change to return int to allow status
	feedback.
	(semaphore::wait): Return return value from semaphore::_wait.
	* thread.h (WAIT_SIGNALED): New definition.
	(pthread::cancelable_wait): Change declaration.  Define do_sig_wait
	as false by default to not interfere with existing calls accidentally.
	(semaphore::_wait): Declare int.
This commit is contained in:
Corinna Vinschen
2004-02-24 11:33:15 +00:00
parent ffde6695da
commit c9a76075f5
3 changed files with 65 additions and 25 deletions

View File

@ -347,6 +347,7 @@ private:
};
#define WAIT_CANCELED (WAIT_OBJECT_0 + 1)
#define WAIT_SIGNALED (WAIT_OBJECT_0 + 2)
class _cygtls;
class pthread: public verifyable_object
@ -393,7 +394,7 @@ public:
virtual void testcancel ();
static void static_cancel_self ();
static DWORD cancelable_wait (HANDLE object, DWORD timeout, const bool do_cancel = true);
static DWORD cancelable_wait (HANDLE object, DWORD timeout, const bool do_cancel = true, const bool do_sig_wait = false);
virtual int setcancelstate (int state, int *oldstate);
virtual int setcanceltype (int type, int *oldtype);
@ -646,7 +647,7 @@ public:
}
private:
void _wait ();
int _wait ();
void _post ();
int _getvalue (int *sval);
int _trywait ();