< prev index next >

src/java.base/solaris/native/libnio/ch/DevPollArrayWrapper.c

Print this page
rev 49271 : [mq]: selector-cleanup
   1 /*
   2  * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 159     struct dvpoll a;
 160     void *pfd = (void *) jlong_to_ptr(address);
 161     int result = 0;
 162 
 163     a.dp_fds = pfd;
 164     a.dp_nfds = numfds;
 165     a.dp_timeout = (int)timeout;
 166 
 167     if (timeout <= 0) {             /* Indefinite or no wait */
 168         RESTARTABLE (ioctl(wfd, DP_POLL, &a), result);
 169     } else {                        /* Bounded wait; bounded restarts */
 170         result = idevpoll(wfd, DP_POLL, a);
 171     }
 172 
 173     if (result < 0) {
 174         JNU_ThrowIOExceptionWithLastError(env, "Error reading driver");
 175         return -1;
 176     }
 177     return result;
 178 }
 179 
 180 JNIEXPORT void JNICALL
 181 Java_sun_nio_ch_DevPollArrayWrapper_interrupt(JNIEnv *env, jclass this, jint fd)
 182 {
 183     int fakebuf[1];
 184     fakebuf[0] = 1;
 185     if (write(fd, fakebuf, 1) < 0) {
 186         JNU_ThrowIOExceptionWithLastError(env,
 187                                           "Write to interrupt fd failed");
 188     }
 189 }
   1 /*
   2  * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 159     struct dvpoll a;
 160     void *pfd = (void *) jlong_to_ptr(address);
 161     int result = 0;
 162 
 163     a.dp_fds = pfd;
 164     a.dp_nfds = numfds;
 165     a.dp_timeout = (int)timeout;
 166 
 167     if (timeout <= 0) {             /* Indefinite or no wait */
 168         RESTARTABLE (ioctl(wfd, DP_POLL, &a), result);
 169     } else {                        /* Bounded wait; bounded restarts */
 170         result = idevpoll(wfd, DP_POLL, a);
 171     }
 172 
 173     if (result < 0) {
 174         JNU_ThrowIOExceptionWithLastError(env, "Error reading driver");
 175         return -1;
 176     }
 177     return result;
 178 }











< prev index next >