* 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.
This commit is contained in:
Corinna Vinschen 2011-04-18 12:00:05 +00:00
parent 0077cd1016
commit 20a0b8c8e6
6 changed files with 40 additions and 2 deletions

View File

@ -1,3 +1,11 @@
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

View File

@ -1160,6 +1160,7 @@ pow10 NOSIGFE
pow10f NOSIGFE
powf NOSIGFE
_powf = powf NOSIGFE
ppoll SIGFE
pread SIGFE
printf SIGFE
program_invocation_name DATA

View File

@ -404,12 +404,13 @@ details. */
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

View File

@ -1,6 +1,6 @@
/* sys/poll.h
Copyright 2000, 2001, 2006 Red Hat, Inc.
Copyright 2000, 2001, 2006, 2011 Red Hat, Inc.
This file is part of Cygwin.
@ -12,6 +12,7 @@
#define _SYS_POLL_H
#include <sys/cdefs.h>
#include <sys/types.h>
__BEGIN_DECLS
@ -39,6 +40,9 @@ struct pollfd {
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

View File

@ -21,6 +21,8 @@
#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)
@ -124,3 +126,24 @@ 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;
}

View File

@ -1116,6 +1116,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
pipe2
pow10
pow10f
ppoll
removexattr
setxattr
strchrnul