diff options
author | Christopher Faylor <me@cgf.cx> | 2001-05-04 20:39:38 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-05-04 20:39:38 +0000 |
commit | 17743fbc49ebb23300e0a36d8c5a27ed63e2bf41 (patch) | |
tree | 5ac0733972c757a0b3b75229f419add2a0a33902 /winsup/cygwin/sync.cc | |
parent | 8b3bcfbab9d0a96b133d6076971ea11bfd52e288 (diff) | |
download | newlib-17743fbc49ebb23300e0a36d8c5a27ed63e2bf41.zip newlib-17743fbc49ebb23300e0a36d8c5a27ed63e2bf41.tar.gz newlib-17743fbc49ebb23300e0a36d8c5a27ed63e2bf41.tar.bz2 |
* exceptions.cc (ctrl_c_handler): Always send signal to process if it has no
tty.
Diffstat (limited to 'winsup/cygwin/sync.cc')
-rw-r--r-- | winsup/cygwin/sync.cc | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/winsup/cygwin/sync.cc b/winsup/cygwin/sync.cc index 5aa798e..85162f4 100644 --- a/winsup/cygwin/sync.cc +++ b/winsup/cygwin/sync.cc @@ -58,7 +58,7 @@ muto::~muto () be handled correctly. Note: The goal here is to minimize, as much as possible, calls to the - OS. Hence the use of InterlockedIncrement, etc., rather than (much) more + OS. Hence the use of ilockincr, etc., rather than (much) more expensive OS mutexes. */ int muto::acquire (DWORD ms) @@ -69,7 +69,7 @@ muto::acquire (DWORD ms) { /* Increment the waiters part of the class. Need to do this first to avoid potential races. */ - LONG was_waiting = InterlockedIncrement (&waiters); + LONG was_waiting = ilockincr (&waiters); /* This is deceptively simple. Basically, it allows multiple attempts to lock the same muto to succeed without attempting to manipulate sync. @@ -82,7 +82,7 @@ muto::acquire (DWORD ms) case, it is possible for a thread which is going to wait for bruteforce to wake up immediately. It will then attempt to grab sync but will fail and go back to waiting. */ - while (tid != this_tid && (was_waiting || InterlockedExchange (&sync, 1) != 0)) + while (tid != this_tid && (was_waiting || ilockexch (&sync, 1) != 0)) { switch (WaitForSingleObject (bruteforce, ms)) { @@ -90,7 +90,7 @@ muto::acquire (DWORD ms) goto gotit; break; default: - InterlockedDecrement (&waiters); + ilockdecr (&waiters); return 0; /* failed. */ } } @@ -117,11 +117,11 @@ muto::release () if (!--visits) { tid = 0; /* We were the last unlocker. */ - (void) InterlockedExchange (&sync, 0); /* Reset trigger. */ + (void) ilockexch (&sync, 0); /* Reset trigger. */ /* This thread had incremented waiters but had never decremented it. Decrement it now. If it is >= 0 then there are possibly other threads waiting for the lock, so trigger bruteforce. */ - if (InterlockedDecrement (&waiters) >= 0) + if (ilockdecr (&waiters) >= 0) (void) SetEvent (bruteforce); /* Wake up one of the waiting threads */ } @@ -133,7 +133,7 @@ void muto::reset () { visits = sync = tid = 0; - InterlockedExchange (&waiters, -1); + ilockexch (&waiters, -1); if (bruteforce) { CloseHandle (bruteforce); |