# HG changeset patch # User simonis # Date 1390206265 -3600 # Node ID 9b394795e216a9cbc52bc9a52bca0339205be112 # Parent 816588059f9dc421ab9d0f178425c1ba334ab3c6 8031997: PPC64: Make the various POLL constants system dependant Reviewed-by: alanb diff -r 816588059f9d -r 9b394795e216 jdk/make/mapfiles/libnio/mapfile-linux --- a/jdk/make/mapfiles/libnio/mapfile-linux Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/make/mapfiles/libnio/mapfile-linux Mon Jan 20 09:24:25 2014 +0100 @@ -117,6 +117,12 @@ Java_sun_nio_ch_Net_getInterface6; Java_sun_nio_ch_Net_shutdown; Java_sun_nio_ch_Net_poll; + Java_sun_nio_ch_Net_pollinValue; + Java_sun_nio_ch_Net_polloutValue; + Java_sun_nio_ch_Net_pollerrValue; + Java_sun_nio_ch_Net_pollhupValue; + Java_sun_nio_ch_Net_pollnvalValue; + Java_sun_nio_ch_Net_pollconnValue; Java_sun_nio_ch_Net_isExclusiveBindAvailable; Java_sun_nio_ch_PollArrayWrapper_interrupt; Java_sun_nio_ch_PollArrayWrapper_poll0; diff -r 816588059f9d -r 9b394795e216 jdk/make/mapfiles/libnio/mapfile-macosx --- a/jdk/make/mapfiles/libnio/mapfile-macosx Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/make/mapfiles/libnio/mapfile-macosx Mon Jan 20 09:24:25 2014 +0100 @@ -109,6 +109,12 @@ Java_sun_nio_ch_Net_getInterface6; Java_sun_nio_ch_Net_shutdown; Java_sun_nio_ch_Net_poll; + Java_sun_nio_ch_Net_pollinValue; + Java_sun_nio_ch_Net_polloutValue; + Java_sun_nio_ch_Net_pollerrValue; + Java_sun_nio_ch_Net_pollhupValue; + Java_sun_nio_ch_Net_pollnvalValue; + Java_sun_nio_ch_Net_pollconnValue; Java_sun_nio_ch_Net_isExclusiveBindAvailable; Java_sun_nio_ch_PollArrayWrapper_interrupt; Java_sun_nio_ch_PollArrayWrapper_poll0; diff -r 816588059f9d -r 9b394795e216 jdk/make/mapfiles/libnio/mapfile-solaris --- a/jdk/make/mapfiles/libnio/mapfile-solaris Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/make/mapfiles/libnio/mapfile-solaris Mon Jan 20 09:24:25 2014 +0100 @@ -105,6 +105,12 @@ Java_sun_nio_ch_Net_getInterface6; Java_sun_nio_ch_Net_shutdown; Java_sun_nio_ch_Net_poll; + Java_sun_nio_ch_Net_pollinValue; + Java_sun_nio_ch_Net_polloutValue; + Java_sun_nio_ch_Net_pollerrValue; + Java_sun_nio_ch_Net_pollhupValue; + Java_sun_nio_ch_Net_pollnvalValue; + Java_sun_nio_ch_Net_pollconnValue; Java_sun_nio_ch_Net_isExclusiveBindAvailable; Java_sun_nio_ch_PollArrayWrapper_interrupt; Java_sun_nio_ch_PollArrayWrapper_poll0; diff -r 816588059f9d -r 9b394795e216 jdk/src/aix/classes/sun/nio/ch/AixPollPort.java --- a/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java Mon Jan 20 09:24:25 2014 +0100 @@ -148,7 +148,7 @@ try { socketpair(sv); // register one end with pollset - pollsetCtl(pollset, PS_ADD, sv[0], POLLIN); + pollsetCtl(pollset, PS_ADD, sv[0], Net.POLLIN); } catch (IOException x) { pollsetDestroy(pollset); throw x; @@ -160,7 +160,7 @@ try { socketpair(sv); // register one end with pollset - pollsetCtl(pollset, PS_ADD, sv[0], POLLIN); + pollsetCtl(pollset, PS_ADD, sv[0], Net.POLLIN); } catch (IOException x) { pollsetDestroy(pollset); throw x; @@ -353,7 +353,7 @@ // This is the only file descriptor without // one shot semantic => register it again. - pollsetCtl(pollset, PS_ADD, sp[0], POLLIN); + pollsetCtl(pollset, PS_ADD, sp[0], Net.POLLIN); // queue special event if there are more events // to handle. @@ -370,7 +370,7 @@ drain1(ctlSp[0]); // This file descriptor does not have // one shot semantic => register it again. - pollsetCtl(pollset, PS_ADD, ctlSp[0], POLLIN); + pollsetCtl(pollset, PS_ADD, ctlSp[0], Net.POLLIN); processControlQueue(); } continue; diff -r 816588059f9d -r 9b394795e216 jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java --- a/jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java Mon Jan 20 09:24:25 2014 +0100 @@ -53,10 +53,6 @@ */ class KQueueArrayWrapper { - // Event masks - static final short POLLIN = AbstractPollArrayWrapper.POLLIN; - static final short POLLOUT = AbstractPollArrayWrapper.POLLOUT; - // kevent filters static short EVFILT_READ; static short EVFILT_WRITE; @@ -129,9 +125,9 @@ // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl, // ServerSocketChannelImpl, SocketChannelImpl if (filter == EVFILT_READ) { - result |= POLLIN; + result |= Net.POLLIN; } else if (filter == EVFILT_WRITE) { - result |= POLLOUT; + result |= Net.POLLOUT; } return result; @@ -180,7 +176,7 @@ if (!ch.isOpen()) continue; - register0(kq, ch.getFDVal(), u.events & POLLIN, u.events & POLLOUT); + register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT); } } } diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/AbstractPollArrayWrapper.java --- a/jdk/src/share/classes/sun/nio/ch/AbstractPollArrayWrapper.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/AbstractPollArrayWrapper.java Mon Jan 20 09:24:25 2014 +0100 @@ -37,14 +37,6 @@ public abstract class AbstractPollArrayWrapper { - // Event masks - public static final short POLLIN = 0x0001; - public static final short POLLOUT = 0x0004; - public static final short POLLERR = 0x0008; - public static final short POLLHUP = 0x0010; - public static final short POLLNVAL = 0x0020; - public static final short POLLREMOVE = 0x0800; - // Miscellaneous constants static final short SIZE_POLLFD = 8; static final short FD_OFFSET = 0; diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java --- a/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -1042,25 +1042,24 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { // This should only happen if this channel is pre-closed while a // selection operation is in progress // ## Throw an error if this channel has not been pre-closed return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -1105,11 +1104,11 @@ int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; if ((ops & SelectionKey.OP_CONNECT) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; sk.selector.putEventOps(sk, newOps); } diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java --- a/jdk/src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java Mon Jan 20 09:24:25 2014 +0100 @@ -187,9 +187,9 @@ if (!dc.isOpen()) throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = dc.poll(PollArrayWrapper.POLLIN, to); + int result = dc.poll(Net.POLLIN, to); if (result > 0 && - ((result & PollArrayWrapper.POLLIN) != 0)) { + ((result & Net.POLLIN) != 0)) { if ((sender = dc.receive(bb)) != null) return sender; } diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/Net.java --- a/jdk/src/share/classes/sun/nio/ch/Net.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/Net.java Mon Jan 20 09:24:25 2014 +0100 @@ -581,9 +581,34 @@ private static native void initIDs(); + /** + * Event masks for the various poll system calls. + * They will be set platform dependant in the static initializer below. + */ + public static final short POLLIN; + public static final short POLLOUT; + public static final short POLLERR; + public static final short POLLHUP; + public static final short POLLNVAL; + public static final short POLLCONN; + + static native short pollinValue(); + static native short polloutValue(); + static native short pollerrValue(); + static native short pollhupValue(); + static native short pollnvalValue(); + static native short pollconnValue(); + static { IOUtil.load(); initIDs(); + + POLLIN = pollinValue(); + POLLOUT = polloutValue(); + POLLERR = pollerrValue(); + POLLHUP = pollhupValue(); + POLLNVAL = pollnvalValue(); + POLLCONN = pollconnValue(); } } diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/ServerSocketAdaptor.java --- a/jdk/src/share/classes/sun/nio/ch/ServerSocketAdaptor.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/ServerSocketAdaptor.java Mon Jan 20 09:24:25 2014 +0100 @@ -113,7 +113,7 @@ if (!ssc.isOpen()) throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = ssc.poll(PollArrayWrapper.POLLIN, to); + int result = ssc.poll(Net.POLLIN, to); if (result > 0 && ((sc = ssc.accept()) != null)) return sc.socket(); to -= System.currentTimeMillis() - st; diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java --- a/jdk/src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -309,21 +309,20 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { // This should only happen if this channel is pre-closed while a // selection operation is in progress // ## Throw an error if this channel has not been pre-closed return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_ACCEPT) != 0)) newOps |= SelectionKey.OP_ACCEPT; @@ -369,7 +368,7 @@ // Translate ops if ((ops & SelectionKey.OP_ACCEPT) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; // Place ops into pollfd array sk.selector.putEventOps(sk, newOps); } diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java --- a/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java Mon Jan 20 09:24:25 2014 +0100 @@ -107,7 +107,7 @@ throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = sc.poll(PollArrayWrapper.POLLCONN, to); + int result = sc.poll(Net.POLLCONN, to); if (result > 0 && sc.finishConnect()) break; to -= System.currentTimeMillis() - st; @@ -201,7 +201,7 @@ if (!sc.isOpen()) throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = sc.poll(PollArrayWrapper.POLLIN, to); + int result = sc.poll(Net.POLLIN, to); if (result > 0) { if ((n = sc.read(bb)) != 0) return n; diff -r 816588059f9d -r 9b394795e216 jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java --- a/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -884,15 +884,14 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { // This should only happen if this channel is pre-closed while a // selection operation is in progress // ## Throw an error if this channel has not been pre-closed return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); // No need to poll again in checkConnect, @@ -901,19 +900,19 @@ return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0) && (state == ST_CONNECTED)) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLCONN) != 0) && + if (((ops & Net.POLLCONN) != 0) && ((intOps & SelectionKey.OP_CONNECT) != 0) && ((state == ST_UNCONNECTED) || (state == ST_PENDING))) { newOps |= SelectionKey.OP_CONNECT; readyToConnect = true; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0) && (state == ST_CONNECTED)) newOps |= SelectionKey.OP_WRITE; @@ -958,11 +957,11 @@ public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; if ((ops & SelectionKey.OP_CONNECT) != 0) - newOps |= PollArrayWrapper.POLLCONN; + newOps |= Net.POLLCONN; sk.selector.putEventOps(sk, newOps); } diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/EPollPort.java --- a/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java Mon Jan 20 09:24:25 2014 +0100 @@ -93,7 +93,7 @@ try { socketpair(sv); // register one end with epoll - epollCtl(epfd, EPOLL_CTL_ADD, sv[0], POLLIN); + epollCtl(epfd, EPOLL_CTL_ADD, sv[0], Net.POLLIN); } catch (IOException x) { close0(epfd); throw x; diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java --- a/jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java Mon Jan 20 09:24:25 2014 +0100 @@ -172,9 +172,9 @@ // TBD: Measure cost of EV_ONESHOT vs. EV_CLEAR, either will do here. int err = 0; int flags = (EV_ADD|EV_ONESHOT); - if ((events & Port.POLLIN) > 0) + if ((events & Net.POLLIN) > 0) err = keventRegister(kqfd, fd, EVFILT_READ, flags); - if (err == 0 && (events & Port.POLLOUT) > 0) + if (err == 0 && (events & Net.POLLOUT) > 0) err = keventRegister(kqfd, fd, EVFILT_WRITE, flags); if (err != 0) throw new InternalError("kevent failed: " + err); // should not happen @@ -227,9 +227,9 @@ int filter = getFilter(keventAddress); int events = 0; if (filter == EVFILT_READ) - events = Port.POLLIN; + events = Net.POLLIN; else if (filter == EVFILT_WRITE) - events = Port.POLLOUT; + events = Net.POLLOUT; Event ev = new Event(channel, events); diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/PollArrayWrapper.java --- a/jdk/src/solaris/classes/sun/nio/ch/PollArrayWrapper.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/PollArrayWrapper.java Mon Jan 20 09:24:25 2014 +0100 @@ -43,8 +43,6 @@ public class PollArrayWrapper extends AbstractPollArrayWrapper { - public static final short POLLCONN = POLLOUT; - // File descriptor to write for interrupt int interruptFD; @@ -58,7 +56,7 @@ void initInterrupt(int fd0, int fd1) { interruptFD = fd1; putDescriptor(0, fd0); - putEventOps(0, POLLIN); + putEventOps(0, Net.POLLIN); putReventOps(0, 0); } diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/Port.java --- a/jdk/src/solaris/classes/sun/nio/ch/Port.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/Port.java Mon Jan 20 09:24:25 2014 +0100 @@ -40,10 +40,6 @@ */ abstract class Port extends AsynchronousChannelGroupImpl { - static final short POLLIN = 0x0001; - static final short POLLOUT = 0x0004; - static final short POLLERR = 0x0008; - static final short POLLHUP = 0x0010; /** * Implemented by clients registered with this port. diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/SinkChannelImpl.java --- a/jdk/src/solaris/classes/sun/nio/ch/SinkChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/SinkChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -118,17 +118,16 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -146,7 +145,7 @@ public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if (ops == SelectionKey.OP_WRITE) - ops = PollArrayWrapper.POLLOUT; + ops = Net.POLLOUT; sk.selector.putEventOps(sk, ops); } diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/SourceChannelImpl.java --- a/jdk/src/solaris/classes/sun/nio/ch/SourceChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/SourceChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -118,17 +118,16 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; @@ -146,7 +145,7 @@ public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if (ops == SelectionKey.OP_READ) - ops = PollArrayWrapper.POLLIN; + ops = Net.POLLIN; sk.selector.putEventOps(sk, ops); } diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java --- a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -148,7 +148,7 @@ synchronized (updateLock) { acceptPending = true; } - port.startPoll(fdVal, Port.POLLIN); + port.startPoll(fdVal, Net.POLLIN); return; } @@ -299,7 +299,7 @@ } // register for connections - port.startPoll(fdVal, Port.POLLIN); + port.startPoll(fdVal, Net.POLLIN); return result; } } catch (Throwable x) { diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java --- a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -142,9 +142,9 @@ assert Thread.holdsLock(updateLock); int events = 0; if (readPending) - events |= Port.POLLIN; + events |= Net.POLLIN; if (connectPending || writePending) - events |= Port.POLLOUT; + events |= Net.POLLOUT; if (events != 0) port.startPoll(fdVal, events); } @@ -204,9 +204,9 @@ */ @Override public void onEvent(int events, boolean mayInvokeDirect) { - boolean readable = (events & Port.POLLIN) > 0; - boolean writable = (events & Port.POLLOUT) > 0; - if ((events & (Port.POLLERR | Port.POLLHUP)) > 0) { + boolean readable = (events & Net.POLLIN) > 0; + boolean writable = (events & Net.POLLOUT) > 0; + if ((events & (Net.POLLERR | Net.POLLHUP)) > 0) { readable = true; writable = true; } diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java --- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -589,15 +589,14 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { /* This should only happen if this channel is pre-closed while a * selection operation is in progress * ## Throw an error if this channel has not been pre-closed */ return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); /* No need to poll again in checkConnect, @@ -606,19 +605,19 @@ return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0) && isConnected()) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLCONN) != 0) && + if (((ops & Net.POLLCONN) != 0) && ((intOps & SelectionKey.OP_CONNECT) != 0) && ((state == ChannelState.UNCONNECTED) || (state == ChannelState.PENDING))) { newOps |= SelectionKey.OP_CONNECT; readyToConnect = true; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0) && isConnected()) newOps |= SelectionKey.OP_WRITE; @@ -642,11 +641,11 @@ public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; if ((ops & SelectionKey.OP_CONNECT) != 0) - newOps |= PollArrayWrapper.POLLCONN; + newOps |= Net.POLLCONN; sk.selector.putEventOps(sk, newOps); } diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java --- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -321,25 +321,24 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { /* This should only happen if this channel is pre-closed while a * selection operation is in progress * ## Throw an error if this channel has not been pre-closed */ return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -361,9 +360,9 @@ public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; sk.selector.putEventOps(sk, newOps); } diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java --- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -314,21 +314,20 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { /* This should only happen if this channel is pre-closed while a * selection operation is in progress * ## Throw an error if this channel has not been pre-closed */ return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_ACCEPT) != 0)) newOps |= SelectionKey.OP_ACCEPT; @@ -352,7 +351,7 @@ /* Translate ops */ if ((ops & SelectionKey.OP_ACCEPT) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; /* Place ops into pollfd array */ sk.selector.putEventOps(sk, newOps); diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/native/sun/nio/ch/IOUtil.c --- a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c Mon Jan 20 09:24:25 2014 +0100 @@ -145,7 +145,6 @@ return (jint)iov_max; } - /* Declared in nio_util.h for use elsewhere in NIO */ jint diff -r 816588059f9d -r 9b394795e216 jdk/src/solaris/native/sun/nio/ch/Net.c --- a/jdk/src/solaris/native/sun/nio/ch/Net.c Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/solaris/native/sun/nio/ch/Net.c Mon Jan 20 09:24:25 2014 +0100 @@ -23,6 +23,7 @@ * questions. */ +#include #include #include #include @@ -749,6 +750,42 @@ } } +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollinValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLIN; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_polloutValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLOUT; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollerrValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLERR; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollhupValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLHUP; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollnvalValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLNVAL; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollconnValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLOUT; +} + /* Declared in nio_util.h */ diff -r 816588059f9d -r 9b394795e216 jdk/src/windows/classes/sun/nio/ch/PollArrayWrapper.java --- a/jdk/src/windows/classes/sun/nio/ch/PollArrayWrapper.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/windows/classes/sun/nio/ch/PollArrayWrapper.java Mon Jan 20 09:24:25 2014 +0100 @@ -53,15 +53,6 @@ static short SIZE_POLLFD = 8; // sizeof pollfd struct - // events masks - @Native static final short POLLIN = AbstractPollArrayWrapper.POLLIN; - @Native static final short POLLOUT = AbstractPollArrayWrapper.POLLOUT; - @Native static final short POLLERR = AbstractPollArrayWrapper.POLLERR; - @Native static final short POLLHUP = AbstractPollArrayWrapper.POLLHUP; - @Native static final short POLLNVAL = AbstractPollArrayWrapper.POLLNVAL; - @Native static final short POLLREMOVE = AbstractPollArrayWrapper.POLLREMOVE; - @Native static final short POLLCONN = 0x0002; - private int size; // Size of the pollArray PollArrayWrapper(int newSize) { @@ -119,6 +110,6 @@ // Adds Windows wakeup socket at a given index. void addWakeupSocket(int fdVal, int index) { putDescriptor(index, fdVal); - putEventOps(index, POLLIN); + putEventOps(index, Net.POLLIN); } } diff -r 816588059f9d -r 9b394795e216 jdk/src/windows/classes/sun/nio/ch/SinkChannelImpl.java --- a/jdk/src/windows/classes/sun/nio/ch/SinkChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/windows/classes/sun/nio/ch/SinkChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -78,17 +78,16 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -106,7 +105,7 @@ public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if ((ops & SelectionKey.OP_WRITE) != 0) - ops = PollArrayWrapper.POLLOUT; + ops = Net.POLLOUT; sk.selector.putEventOps(sk, ops); } diff -r 816588059f9d -r 9b394795e216 jdk/src/windows/classes/sun/nio/ch/SourceChannelImpl.java --- a/jdk/src/windows/classes/sun/nio/ch/SourceChannelImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/windows/classes/sun/nio/ch/SourceChannelImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -77,17 +77,16 @@ int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; @@ -105,7 +104,7 @@ public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if ((ops & SelectionKey.OP_READ) != 0) - ops = PollArrayWrapper.POLLIN; + ops = Net.POLLIN; sk.selector.putEventOps(sk, ops); } diff -r 816588059f9d -r 9b394795e216 jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java --- a/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java Mon Jan 20 09:24:25 2014 +0100 @@ -313,16 +313,16 @@ private int processSelectedKeys(long updateCount) { int numKeysUpdated = 0; numKeysUpdated += processFDSet(updateCount, readFds, - PollArrayWrapper.POLLIN, + Net.POLLIN, false); numKeysUpdated += processFDSet(updateCount, writeFds, - PollArrayWrapper.POLLCONN | - PollArrayWrapper.POLLOUT, + Net.POLLCONN | + Net.POLLOUT, false); numKeysUpdated += processFDSet(updateCount, exceptFds, - PollArrayWrapper.POLLIN | - PollArrayWrapper.POLLCONN | - PollArrayWrapper.POLLOUT, + Net.POLLIN | + Net.POLLCONN | + Net.POLLOUT, true); return numKeysUpdated; } diff -r 816588059f9d -r 9b394795e216 jdk/src/windows/native/sun/nio/ch/Net.c --- a/jdk/src/windows/native/sun/nio/ch/Net.c Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/windows/native/sun/nio/ch/Net.c Mon Jan 20 09:24:25 2014 +0100 @@ -554,11 +554,11 @@ FD_ZERO(&rd); FD_ZERO(&wr); FD_ZERO(&ex); - if (events & sun_nio_ch_PollArrayWrapper_POLLIN) { + if (events & POLLIN) { FD_SET(fd, &rd); } - if (events & sun_nio_ch_PollArrayWrapper_POLLOUT || - events & sun_nio_ch_PollArrayWrapper_POLLCONN) { + if (events & POLLOUT || + events & POLLCONN) { FD_SET(fd, &wr); } FD_SET(fd, &ex); @@ -572,14 +572,50 @@ } else if (rv >= 0) { rv = 0; if (FD_ISSET(fd, &rd)) { - rv |= sun_nio_ch_PollArrayWrapper_POLLIN; + rv |= POLLIN; } if (FD_ISSET(fd, &wr)) { - rv |= sun_nio_ch_PollArrayWrapper_POLLOUT; + rv |= POLLOUT; } if (FD_ISSET(fd, &ex)) { - rv |= sun_nio_ch_PollArrayWrapper_POLLERR; + rv |= POLLERR; } } return rv; } + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollinValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLIN; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_polloutValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLOUT; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollerrValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLERR; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollhupValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLHUP; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollnvalValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLNVAL; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollconnValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLCONN; +} diff -r 816588059f9d -r 9b394795e216 jdk/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c --- a/jdk/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c Mon Jan 20 09:24:25 2014 +0100 @@ -33,13 +33,15 @@ #define FD_SETSIZE 1024 #include +#include + #include "jvm.h" #include "jni.h" #include "jni_util.h" #include "sun_nio_ch_WindowsSelectorImpl.h" #include "sun_nio_ch_PollArrayWrapper.h" -#include "winsock2.h" +#include "nio_util.h" /* Needed for POLL* constants (includes "winsock2.h") */ typedef struct { jint fd; @@ -79,12 +81,11 @@ /* Set FD_SET structures required for select */ for (i = 0; i < numfds; i++) { - if (fds[i].events & sun_nio_ch_PollArrayWrapper_POLLIN) { + if (fds[i].events & POLLIN) { readfds.fd_array[read_count] = fds[i].fd; read_count++; } - if (fds[i].events & (sun_nio_ch_PollArrayWrapper_POLLOUT | - sun_nio_ch_PollArrayWrapper_POLLCONN)) + if (fds[i].events & (POLLOUT | POLLCONN)) { writefds.fd_array[write_count] = fds[i].fd; write_count++; @@ -110,12 +111,11 @@ /* prepare select structures for the i-th socket */ errreadfds.fd_count = 0; errwritefds.fd_count = 0; - if (fds[i].events & sun_nio_ch_PollArrayWrapper_POLLIN) { + if (fds[i].events & POLLIN) { errreadfds.fd_array[0] = fds[i].fd; errreadfds.fd_count = 1; } - if (fds[i].events & (sun_nio_ch_PollArrayWrapper_POLLOUT | - sun_nio_ch_PollArrayWrapper_POLLCONN)) + if (fds[i].events & (POLLOUT | POLLCONN)) { errwritefds.fd_array[0] = fds[i].fd; errwritefds.fd_count = 1; diff -r 816588059f9d -r 9b394795e216 jdk/src/windows/native/sun/nio/ch/nio_util.h --- a/jdk/src/windows/native/sun/nio/ch/nio_util.h Mon Jan 20 09:20:13 2014 +0100 +++ b/jdk/src/windows/native/sun/nio/ch/nio_util.h Mon Jan 20 09:24:25 2014 +0100 @@ -23,6 +23,8 @@ * questions. */ +#include + #include "jni.h" /** @@ -55,3 +57,19 @@ }; #endif + +#ifndef POLLIN + /* WSAPoll()/WSAPOLLFD and the corresponding constants are only defined */ + /* in Windows Vista / Windows Server 2008 and later. If we are on an */ + /* older release we just use the Solaris constants as this was previously */ + /* done in PollArrayWrapper.java. */ + #define POLLIN 0x0001 + #define POLLOUT 0x0004 + #define POLLERR 0x0008 + #define POLLHUP 0x0010 + #define POLLNVAL 0x0020 + #define POLLCONN 0x0002 +#else + /* POLLCONN must not equal any of the other constants (see winsock2.h). */ + #define POLLCONN 0x2000 +#endif