* fhandler_tape.cc (fhandler_dev_tape::_lock): Add cw_sig_restart to

cygwait call.
	* thread.cc (pthread_mutex::lock): Ditto.
	(semaphore::_timedwait): Fix formatting.
	(semaphore::_wait): Ditto.
	* thread.h (fast_mutex::lock): Ditto.

	...and fix ChangeLog accordingly.
This commit is contained in:
Corinna Vinschen
2015-02-25 17:50:13 +00:00
parent e93954138f
commit 0066e440c1
4 changed files with 19 additions and 15 deletions

View File

@ -1760,8 +1760,7 @@ pthread_mutex::lock ()
else if (type == PTHREAD_MUTEX_NORMAL /* potentially causes deadlock */
|| !pthread::equal (owner, self))
{
/* FIXME: no cancel? */
cygwait (win32_obj_id, cw_infinite, cw_sig);
cygwait (win32_obj_id, cw_infinite, cw_sig | cw_sig_restart);
set_owner (self);
}
else
@ -3518,7 +3517,8 @@ semaphore::_timedwait (const struct timespec *abstime)
timeout.QuadPart = abstime->tv_sec * NSPERSEC
+ (abstime->tv_nsec + 99) / 100 + FACTOR;
switch (cygwait (win32_obj_id, &timeout, cw_cancel | cw_cancel_self | cw_sig_eintr))
switch (cygwait (win32_obj_id, &timeout,
cw_cancel | cw_cancel_self | cw_sig_eintr))
{
case WAIT_OBJECT_0:
break;
@ -3551,7 +3551,8 @@ semaphore::_timedwait (const struct timespec *abstime)
int
semaphore::_wait ()
{
switch (cygwait (win32_obj_id, cw_infinite, cw_cancel | cw_cancel_self | cw_sig_eintr))
switch (cygwait (win32_obj_id, cw_infinite,
cw_cancel | cw_cancel_self | cw_sig_eintr))
{
case WAIT_OBJECT_0:
break;