summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/i386/ibcs2/ibcs2_msg.c77
-rw-r--r--sys/i386/ibcs2/ibcs2_poll.h51
-rw-r--r--sys/i386/ibcs2/syscalls.master4
3 files changed, 2 insertions, 130 deletions
diff --git a/sys/i386/ibcs2/ibcs2_msg.c b/sys/i386/ibcs2/ibcs2_msg.c
index bbca3b8ff13e..0492beff74eb 100644
--- a/sys/i386/ibcs2/ibcs2_msg.c
+++ b/sys/i386/ibcs2/ibcs2_msg.c
@@ -38,7 +38,6 @@ __FBSDID("$FreeBSD$");
#include <i386/ibcs2/ibcs2_types.h>
#include <i386/ibcs2/ibcs2_signal.h>
#include <i386/ibcs2/ibcs2_util.h>
-#include <i386/ibcs2/ibcs2_poll.h>
#include <i386/ibcs2/ibcs2_proto.h>
@@ -57,79 +56,3 @@ ibcs2_putmsg(td, uap)
{
return 0; /* fake */
}
-
-
-int
-ibcs2_poll(td, uap)
- struct thread *td;
- struct ibcs2_poll_args *uap;
-{
- int error, i, nfds;
- fd_set *readfds, *writefds, *exceptfds;
- struct timeval timeout, *tp;
- struct ibcs2_poll conv;
- caddr_t sg = stackgap_init();
-
- if (uap->nfds > FD_SETSIZE)
- return EINVAL;
- readfds = stackgap_alloc(&sg, sizeof(fd_set *));
- writefds = stackgap_alloc(&sg, sizeof(fd_set *));
- exceptfds = stackgap_alloc(&sg, sizeof(fd_set *));
-
- FD_ZERO(readfds);
- FD_ZERO(writefds);
- FD_ZERO(exceptfds);
- if (uap->timeout == -1)
- tp = NULL;
- else {
- timeout.tv_usec = (uap->timeout % 1000)*1000;
- timeout.tv_sec = uap->timeout / 1000;
- tp = &timeout;
- }
-
- nfds = 0;
- for (i = 0; i < uap->nfds; i++) {
- if ((error = copyin(uap->fds + i*sizeof(struct ibcs2_poll),
- &conv, sizeof(conv))) != 0)
- return error;
- conv.revents = 0;
- if (conv.fd < 0 || conv.fd >= FD_SETSIZE)
- continue;
- if (conv.fd >= nfds)
- nfds = conv.fd + 1;
- if (conv.events & IBCS2_READPOLL)
- FD_SET(conv.fd, readfds);
- if (conv.events & IBCS2_WRITEPOLL)
- FD_SET(conv.fd, writefds);
- FD_SET(conv.fd, exceptfds);
- }
- error = kern_select(td, nfds, readfds, writefds, exceptfds, tp);
- if (error != 0)
- return error;
- if (td->td_retval[0] == 0)
- return 0;
- td->td_retval[0] = 0;
- for (td->td_retval[0] = 0, i = 0; i < uap->nfds; i++) {
- copyin(uap->fds + i*sizeof(struct ibcs2_poll),
- &conv, sizeof(conv));
- conv.revents = 0;
- if (conv.fd < 0 || conv.fd > FD_SETSIZE)
- /* should check for open as well */
- conv.revents |= IBCS2_POLLNVAL;
- else {
- if (FD_ISSET(conv.fd, readfds))
- conv.revents |= IBCS2_POLLIN;
- if (FD_ISSET(conv.fd, writefds))
- conv.revents |= IBCS2_POLLOUT;
- if (FD_ISSET(conv.fd, exceptfds))
- conv.revents |= IBCS2_POLLERR;
- if (conv.revents)
- ++td->td_retval[0];
- }
- if ((error = copyout(&conv,
- uap->fds + i*sizeof(struct ibcs2_poll),
- sizeof(conv))) != 0)
- return error;
- }
- return 0;
-}
diff --git a/sys/i386/ibcs2/ibcs2_poll.h b/sys/i386/ibcs2/ibcs2_poll.h
deleted file mode 100644
index fecec70797ac..000000000000
--- a/sys/i386/ibcs2/ibcs2_poll.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * Copyright (c) 1995 Steven Wallace
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-
-#ifndef _IBCS2_POLL_H
-#define _IBCS2_POLL_H 1
-
-/* iBCS2 poll commands */
-#define IBCS2_POLLIN 0x0001
-#define IBCS2_POLLPRI 0x0002
-#define IBCS2_POLLOUT 0x0004
-#define IBCS2_POLLERR 0x0008
-#define IBCS2_POLLHUP 0x0010
-#define IBCS2_POLLNVAL 0x0020
-#define IBCS2_POLLRDNORM 0x0040
-#define IBCS2_POLLWRNORM 0x0004
-#define IBCS2_POLLRDBAND 0x0080
-#define IBCS2_POLLWRBAND 0x0100
-#define IBCS2_READPOLL (IBCS2_POLLIN|IBCS2_POLLRDNORM|IBCS2_POLLRDBAND)
-#define IBCS2_WRITEPOLL (IBCS2_POLLOUT|IBCS2_POLLWRNORM|IBCS2_POLLWRBAND)
-
-struct ibcs2_poll {
- int fd;
- short events;
- short revents;
-};
-
-#endif /* _IBCS2_POLL_H */
diff --git a/sys/i386/ibcs2/syscalls.master b/sys/i386/ibcs2/syscalls.master
index ac1e444f01dd..1a9b590be262 100644
--- a/sys/i386/ibcs2/syscalls.master
+++ b/sys/i386/ibcs2/syscalls.master
@@ -158,8 +158,8 @@
86 AUE_PUTMSG MSTD { int ibcs2_putmsg(int fd, \
struct ibcs2_stropts *ctl, \
struct ibcs2_stropts *dat, int flags); }
-87 AUE_POLL STD { int ibcs2_poll(struct ibcs2_poll *fds, \
- long nfds, int timeout); }
+87 AUE_POLL MNOPROTO { int poll(struct pollfd *fds, u_int nfds, \
+ int timeout); }
88 AUE_NULL UNIMPL nosys
89 AUE_NULL MSTD { int ibcs2_secure(int cmd, int a1, int a2, \
int a3, int a4, int a5); }