* select.cc (select_stuff::wait): Very minor formatting fix.

(peek_windows): Report on HWND handle used in queries.
* select.h: Update copyright.
* sigproc.h (cygwait): Eliminate multi-argument variety since more general
implementation may cause odd problems in select.  Also force to always be
inline.
This commit is contained in:
Christopher Faylor 2011-12-11 01:25:20 +00:00
parent 14bb21fe45
commit fc25f200f4
4 changed files with 22 additions and 23 deletions

View File

@ -1,3 +1,12 @@
2011-12-10 Christopher Faylor <me.cygwin2011@cgf.cx>
* select.cc (select_stuff::wait): Very minor formatting fix.
(peek_windows): Report on HWND handle used in queries.
* select.h: Update copyright.
* sigproc.h (cygwait): Eliminate multi-argument variety since more
general implementation may cause odd problems in select. Also force to
always be inline.
2011-12-10 Christopher Faylor <me.cygwin2011@cgf.cx>
* sigproc.h (cygwait): Delete duplicate va_start and add matching

View File

@ -366,8 +366,8 @@ select_stuff::wait (fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
set_errno (s->saw_error ());
return -1; /* Somebody detected an error */
}
else if ((((wait_ret >= m && s->windows_handle) || s->h == w4[wait_ret])) &&
s->verify (s, readfds, writefds, exceptfds))
else if ((((wait_ret >= m && s->windows_handle) || s->h == w4[wait_ret]))
&& s->verify (s, readfds, writefds, exceptfds))
gotone = true;
select_printf ("gotone %d", gotone);
@ -1498,11 +1498,11 @@ peek_windows (select_record *me, bool)
if (PeekMessageW (&m, (HWND) h, 0, 0, PM_NOREMOVE))
{
me->read_ready = true;
select_printf ("window %d(%p) ready", me->fd, me->fh->get_handle ());
select_printf ("window %d(%p) ready", me->fd, h);
return 1;
}
select_printf ("window %d(%p) not ready", me->fd, me->fh->get_handle ());
select_printf ("window %d(%p) not ready", me->fd, h);
return me->write_ready;
}

View File

@ -1,7 +1,7 @@
/* select.h
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009, 2010 Red Hat, Inc.
2005, 2006, 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
This file is part of Cygwin.

View File

@ -81,33 +81,23 @@ void __stdcall sigproc_init ();
#ifdef __INSIDE_CYGWIN__
void __stdcall sigproc_terminate (enum exit_states);
static inline DWORD
cygwait (DWORD n, DWORD howlong, ...)
static inline DWORD __attribute__ ((always_inline))
cygwait (HANDLE h, DWORD howlong = INFINITE)
{
va_list ap;
HANDLE w4[n + 2];
va_start (ap, howlong);
for (unsigned i = 0; i < n; i++)
w4[i] = va_arg (ap, HANDLE);
va_end (ap);
HANDLE w4[3];
int n = 0;
if ((w4[n] = h) != NULL)
n++;
w4[n++] = signal_arrived;
if ((w4[n] = pthread::get_cancel_event ()) != NULL)
n++;
return WaitForMultipleObjects (n, w4, FALSE, howlong);
}
static inline DWORD
cygwait (HANDLE h, DWORD wait = INFINITE)
{
return cygwait (1, wait, h);
}
static inline DWORD
static inline DWORD __attribute__ ((always_inline))
cygwait (DWORD wait)
{
return cygwait ((DWORD) 0, wait);
return cygwait ((HANDLE) NULL, wait);
}
#endif
bool __stdcall pid_exists (pid_t) __attribute__ ((regparm(1)));