--- a/src/java.base/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java Fri Mar 23 09:51:02 2018 +0100
+++ b/src/java.base/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java Fri Mar 23 14:18:18 2018 +0000
@@ -127,7 +127,7 @@
// descriptor is registered with /dev/poll.
private final BitSet registered = new BitSet();
- DevPollArrayWrapper() {
+ DevPollArrayWrapper() throws IOException {
int allocationSize = NUM_POLLFDS * SIZE_POLLFD;
pollArray = new AllocatedNativeObject(allocationSize, true);
pollArrayAddress = pollArray.address();
@@ -136,7 +136,7 @@
eventsHigh = new HashMap<>();
}
- void initInterrupt(int fd0, int fd1) {
+ void initInterrupt(int fd0, int fd1) throws IOException {
outgoingInterruptFD = fd1;
incomingInterruptFD = fd0;
register(wfd, fd0, POLLIN);
@@ -200,7 +200,7 @@
}
}
- void release(int fd) {
+ void release(int fd) throws IOException {
synchronized (updateLock) {
// ignore any pending update for this file descriptor
setUpdateEvents(fd, IGNORE);
@@ -297,7 +297,11 @@
boolean interrupted = false;
public void interrupt() {
- interrupt(outgoingInterruptFD);
+ try {
+ IOUtil.write1(outgoingInterruptFD, (byte)0);
+ } catch (IOException ioe) {
+ throw new InternalError(ioe);
+ }
}
public int interruptedIndex() {
@@ -312,13 +316,12 @@
interrupted = false;
}
- private native int init();
- private native void register(int wfd, int fd, int mask);
+ private native int init() throws IOException;
+ private native void register(int wfd, int fd, int mask) throws IOException;
private native void registerMultiple(int wfd, long address, int len)
throws IOException;
- private native int poll0(long pollAddress, int numfds, long timeout,
- int wfd);
- private static native void interrupt(int fd);
+ private native int poll0(long pollAddress, int numfds, long timeout, int wfd)
+ throws IOException;
static {
IOUtil.load();