* poll.cc (ppoll): Implement.
* posix.sgml (std-gnu): Add ppoll.
* include/cygwin/version.h: Bump API minor number.
* include/sys/poll.h (ppoll): Declare.
2011-04-18 Corinna Vinschen <corinna@vinschen.de>
+ * cygwin.din (ppoll): Export.
+ * poll.cc (ppoll): Implement.
+ * posix.sgml (std-gnu): Add ppoll.
+ * include/cygwin/version.h: Bump API minor number.
+ * include/sys/poll.h (ppoll): Declare.
+
+2011-04-18 Corinna Vinschen <corinna@vinschen.de>
+
* fhandler_socket.cc (fhandler_socket::evaluate_events): Handle the
FD_CLOSE event specially when called from accept. Explain why.
(fhandler_socket::shutdown): Fake success on not-connected socket and
pow10f NOSIGFE
powf NOSIGFE
_powf = powf NOSIGFE
+ppoll SIGFE
pread SIGFE
printf SIGFE
program_invocation_name DATA
238: Export pthread_spin_destroy, pthread_spin_init, pthread_spin_lock,
pthread_spin_trylock, pthread_spin_unlock.
239: Export pthread_setschedprio.
+ 240: Export ppoll.
*/
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
#define CYGWIN_VERSION_API_MAJOR 0
-#define CYGWIN_VERSION_API_MINOR 239
+#define CYGWIN_VERSION_API_MINOR 240
/* There is also a compatibity version number associated with the
shared memory regions. It is incremented when incompatible
/* sys/poll.h
- Copyright 2000, 2001, 2006 Red Hat, Inc.
+ Copyright 2000, 2001, 2006, 2011 Red Hat, Inc.
This file is part of Cygwin.
#define _SYS_POLL_H
#include <sys/cdefs.h>
+#include <sys/types.h>
__BEGIN_DECLS
typedef unsigned int nfds_t;
extern int poll __P ((struct pollfd *fds, nfds_t nfds, int timeout));
+extern int ppoll __P ((struct pollfd *fds, nfds_t nfds,
+ const struct timespec *timeout_ts,
+ const sigset_t *sigmask));
__END_DECLS
#include "fhandler.h"
#include "dtable.h"
#include "cygheap.h"
+#include "pinfo.h"
+#include "sigproc.h"
extern "C" int
poll (struct pollfd *fds, nfds_t nfds, int timeout)
return ret;
}
+
+extern "C" int
+ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts,
+ const sigset_t *sigmask)
+{
+ int timeout;
+ sigset_t oldset = _my_tls.sigmask;
+
+ myfault efault;
+ if (efault.faulted (EFAULT))
+ return -1;
+ timeout = (timeout_ts == NULL)
+ ? -1
+ : (timeout_ts->tv_sec * 1000 + timeout_ts->tv_nsec / 1000000);
+ if (sigmask)
+ set_signal_mask (*sigmask, _my_tls.sigmask);
+ int ret = poll (fds, nfds, timeout);
+ if (sigmask)
+ set_signal_mask (oldset, _my_tls.sigmask);
+ return ret;
+}
pipe2
pow10
pow10f
+ ppoll
removexattr
setxattr
strchrnul