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
23 * questions.
24 */
25
26 #include <poll.h>
27
28 #include "jni.h"
29 #include "jni_util.h"
30 #include "jvm.h"
31 #include "jlong.h"
32 #include "nio.h"
33 #include "sun_nio_ch_PollSelectorImpl.h"
34
35 JNIEXPORT jint JNICALL
36 Java_sun_nio_ch_PollSelectorImpl_poll(JNIEnv *env, jclass clazz,
37 jlong address, jint numfds,
38 jint timeout)
39 {
40 struct pollfd *a;
41 int res;
42
43 a = (struct pollfd *) jlong_to_ptr(address);
44 res = poll(a, numfds, timeout);
45 if (res < 0) {
46 if (errno == EINTR) {
47 return IOS_INTERRUPTED;
48 } else {
49 JNU_ThrowIOExceptionWithLastError(env, "poll failed");
50 return IOS_THROWN;
51 }
52 }
53 return (jint) res;
54 }
55
|
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
23 * questions.
24 */
25
26 #include <poll.h>
27
28 #include "jni.h"
29 #include "jni_util.h"
30 #include "jvm.h"
31 #include "jlong.h"
32 #include "nio.h"
33 #include "sun_nio_ch_PollSelectorImpl.h"
34
35 JNIEXPORT jint JNICALL
36 Java_sun_nio_ch_PollSelectorImpl_poll0(JNIEnv *env, jclass clazz,
37 jlong address, jint numfds,
38 jint timeout)
39 {
40 struct pollfd *a;
41 int res;
42
43 a = (struct pollfd *) jlong_to_ptr(address);
44 res = poll(a, numfds, timeout);
45 if (res < 0) {
46 if (errno == EINTR) {
47 return IOS_INTERRUPTED;
48 } else {
49 JNU_ThrowIOExceptionWithLastError(env, "poll failed");
50 return IOS_THROWN;
51 }
52 }
53 return (jint) res;
54 }
55
|