From ef8bff85be3057385b34a4c0f8ba2b274041ffcc Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 24 Nov 2011 21:36:53 +0000 Subject: * cygthread.h (cygthread::name): Default name to "main" if we are early in the process of setting up the DLL and no name is known. * dcrt0.cc (initial_env): Remove CYGWIN_SLEEP stuff. (get_cygwin_startup_info): Activate strace here as appropriate. (dll_crt0_0): Move get_cygwin_startup_info as early as possible to avoid missing strace output. * fork.cc (frok::child): Move debugging statement to point where ppid will be set. * pinfo.cc (pinfo::thisproc): Remove obsolete call to strace.hello. Tweak debug output slightly. * select.cc (select_stuff::wait): Allow APCS to be triggered while waiting since we use them now. Report when that happens. * sigproc.cc (child_info::child_info): Use strace.active() rather than strace.attached(). * spawn.cc (child_info_spawn::worker): Only write strace child pid when we know it's a cygwin process. Accommodate change to write_child argument list. * strace.cc (strace::hello): Delete. Move functionality... (strace::activate): ...to here. (mypid): Just use raw GetCurrentProcessId () if myself isn't set. (strace::write_childpid): Don't wait for subproc_ready. Remove arg which was required for it. * include/sys/strace.h (strace::hello): Delete. (strace::write_childpid): Delete first argument. --- winsup/cygwin/select.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'winsup/cygwin/select.cc') diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 465b4eba0..c3d3c950d 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -309,7 +309,7 @@ select_stuff::wait (fd_set *readfds, fd_set *writefds, fd_set *exceptfds, for (;;) { if (!windows_used) - wait_ret = WaitForMultipleObjects (m, w4, FALSE, ms); + wait_ret = WaitForMultipleObjectsEx (m, w4, FALSE, ms, true); else /* Using MWMO_INPUTAVAILABLE is the officially supported solution for the problem that the call to PeekMessage disarms the queue state @@ -317,10 +317,14 @@ select_stuff::wait (fd_set *readfds, fd_set *writefds, fd_set *exceptfds, in the queue. */ wait_ret = MsgWaitForMultipleObjectsEx (m, w4, ms, QS_ALLINPUT | QS_ALLPOSTMESSAGE, - MWMO_INPUTAVAILABLE); + MWMO_INPUTAVAILABLE | MWMO_ALERTABLE); switch (wait_ret) { + case WAIT_IO_COMPLETION: + syscall_printf ("woke due to apc"); + continue; /* Keep going */ + break; case WAIT_OBJECT_0: cleanup (); select_printf ("signal received"); -- cgit v1.2.3