mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-20 16:01:10 +08:00
Change "set_thread_waiting" to "set_signal_arrived" throughout.
This commit is contained in:
parent
962f9a2ccc
commit
44aa2292b7
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -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 ();
|
||||
|
@ -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)
|
||||
|
@ -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++;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user