Change "set_thread_waiting" to "set_signal_arrived" throughout.

This commit is contained in:
Christopher Faylor 2012-07-23 04:36:48 +00:00
parent 962f9a2ccc
commit 44aa2292b7
10 changed files with 16 additions and 12 deletions

View File

@ -1,3 +1,7 @@
2012-07-23 Christopher Faylor <me.cygwin2012@cgf.cx>
Change "set_thread_waiting" to "set_signal_arrived" throughout.
2012-07-21 Christopher Faylor <me.cygwin2012@cgf.cx>
* DevNotes: Add entry cgf-000013.

View File

@ -4,7 +4,7 @@ These changes reflect a revamp of the "wait for signal" functionality
which has existed in Cygwin through several signal massages.
We now create a signal event only when a thread is waiting for a signal
and arm it only for that thread. The "set_thread_waiting" function is
and arm it only for that thread. The "set_signal_arrived" function is
used to establish the event and set it in a location referencable by
the caller.

View File

@ -377,7 +377,7 @@ cygthread::detach (HANDLE sigwait)
unsigned n = 2;
DWORD howlong = INFINITE;
w4[0] = sigwait;
set_thread_waiting here (w4[1]);
set_signal_arrived here (w4[1]);
/* For a description of the below loop see the end of this file */
for (int i = 0; i < 2; i++)
switch (res = WaitForMultipleObjects (n, w4, FALSE, howlong))

View File

@ -315,14 +315,14 @@ public:
}
};
class set_thread_waiting
class set_signal_arrived
{
public:
set_thread_waiting (bool setit, HANDLE& h) { _my_tls.set_signal_arrived (setit, h); }
set_thread_waiting (HANDLE& h) { _my_tls.set_signal_arrived (true, h); }
set_signal_arrived (bool setit, HANDLE& h) { _my_tls.set_signal_arrived (setit, h); }
set_signal_arrived (HANDLE& h) { _my_tls.set_signal_arrived (true, h); }
operator int () const {return _my_tls.signal_waiting;}
~set_thread_waiting () { _my_tls.signal_waiting = false; }
~set_signal_arrived () { _my_tls.signal_waiting = false; }
};
#define __getreent() (&_my_tls.local_clib)

View File

@ -38,7 +38,7 @@ cancelable_wait (HANDLE object, PLARGE_INTEGER timeout, unsigned mask)
if (object)
wait_objects[num++] = object;
set_thread_waiting thread_waiting (is_cw_sig_handle, wait_objects[num]);
set_signal_arrived thread_waiting (is_cw_sig_handle, wait_objects[num]);
debug_printf ("thread waiting %d, signal_arrived %p", (int) thread_waiting, _my_tls.signal_arrived);
DWORD sig_n;
if (!thread_waiting)

View File

@ -658,7 +658,7 @@ fhandler_socket::wait_for_events (const long event_mask, const DWORD flags)
}
WSAEVENT ev[2] = { wsock_evt };
set_thread_waiting here (ev[1]);
set_signal_arrived here (ev[1]);
switch (WSAWaitForMultipleEvents (2, ev, FALSE, 50, FALSE))
{
case WSA_WAIT_TIMEOUT:

View File

@ -97,7 +97,7 @@ fhandler_windows::read (void *buf, size_t& len)
}
HANDLE w4[3] = { get_handle (), };
set_thread_waiting here (w4[1]);
set_signal_arrived here (w4[1]);
DWORD cnt = 2;
if ((w4[cnt] = pthread::get_cancel_event ()) != NULL)
++cnt;

View File

@ -1247,7 +1247,7 @@ lf_setlock (lockf_t *lock, inode_t *node, lockf_t **clean, HANDLE fhdl)
timeout = 100L;
DWORD WAIT_SIGNAL_ARRIVED = WAIT_OBJECT_0 + wait_count;
set_thread_waiting here (w4[wait_count++]);
set_signal_arrived here (w4[wait_count++]);
DWORD WAIT_THREAD_CANCELED = WAIT_TIMEOUT + 1;
HANDLE cancel_event = pthread::get_cancel_event ();

View File

@ -177,7 +177,7 @@ ipc_cond_timedwait (HANDLE evt, HANDLE mtx, const struct timespec *abstime)
DWORD timer_idx = 0;
int ret = 0;
set_thread_waiting here (w4[1]);
set_signal_arrived here (w4[1]);
if ((w4[cnt] = pthread::get_cancel_event ()) != NULL)
++cnt;
if (abstime)

View File

@ -332,7 +332,7 @@ select_stuff::wait (fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
select_record *s = &start;
DWORD m = 0;
set_thread_waiting here (w4[m++]);
set_signal_arrived here (w4[m++]);
if ((w4[m] = pthread::get_cancel_event ()) != NULL)
m++;