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> 2012-07-21 Christopher Faylor <me.cygwin2012@cgf.cx>
* DevNotes: Add entry cgf-000013. * 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. which has existed in Cygwin through several signal massages.
We now create a signal event only when a thread is waiting for a signal 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 used to establish the event and set it in a location referencable by
the caller. the caller.

View File

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

View File

@ -315,14 +315,14 @@ public:
} }
}; };
class set_thread_waiting class set_signal_arrived
{ {
public: public:
set_thread_waiting (bool setit, HANDLE& h) { _my_tls.set_signal_arrived (setit, h); } set_signal_arrived (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 (HANDLE& h) { _my_tls.set_signal_arrived (true, h); }
operator int () const {return _my_tls.signal_waiting;} 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) #define __getreent() (&_my_tls.local_clib)

View File

@ -38,7 +38,7 @@ cancelable_wait (HANDLE object, PLARGE_INTEGER timeout, unsigned mask)
if (object) if (object)
wait_objects[num++] = 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); debug_printf ("thread waiting %d, signal_arrived %p", (int) thread_waiting, _my_tls.signal_arrived);
DWORD sig_n; DWORD sig_n;
if (!thread_waiting) 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 }; WSAEVENT ev[2] = { wsock_evt };
set_thread_waiting here (ev[1]); set_signal_arrived here (ev[1]);
switch (WSAWaitForMultipleEvents (2, ev, FALSE, 50, FALSE)) switch (WSAWaitForMultipleEvents (2, ev, FALSE, 50, FALSE))
{ {
case WSA_WAIT_TIMEOUT: case WSA_WAIT_TIMEOUT:

View File

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

View File

@ -1247,7 +1247,7 @@ lf_setlock (lockf_t *lock, inode_t *node, lockf_t **clean, HANDLE fhdl)
timeout = 100L; timeout = 100L;
DWORD WAIT_SIGNAL_ARRIVED = WAIT_OBJECT_0 + wait_count; 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; DWORD WAIT_THREAD_CANCELED = WAIT_TIMEOUT + 1;
HANDLE cancel_event = pthread::get_cancel_event (); 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; DWORD timer_idx = 0;
int ret = 0; int ret = 0;
set_thread_waiting here (w4[1]); set_signal_arrived here (w4[1]);
if ((w4[cnt] = pthread::get_cancel_event ()) != NULL) if ((w4[cnt] = pthread::get_cancel_event ()) != NULL)
++cnt; ++cnt;
if (abstime) if (abstime)

View File

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