--- a/jdk/src/solaris/native/sun/nio/ch/FileDispatcher.c Thu Feb 26 10:57:10 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
- * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-#include "jni.h"
-#include "jni_util.h"
-#include "jvm.h"
-#include "jlong.h"
-#include "sun_nio_ch_FileDispatcher.h"
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <fcntl.h>
-#include <sys/uio.h>
-#include "nio_util.h"
-
-
-static int preCloseFD = -1; /* File descriptor to which we dup other fd's
- before closing them for real */
-
-
-JNIEXPORT void JNICALL
-Java_sun_nio_ch_FileDispatcher_init(JNIEnv *env, jclass cl)
-{
- int sp[2];
- if (socketpair(PF_UNIX, SOCK_STREAM, 0, sp) < 0) {
- JNU_ThrowIOExceptionWithLastError(env, "socketpair failed");
- return;
- }
- preCloseFD = sp[0];
- close(sp[1]);
-}
-
-JNIEXPORT jint JNICALL
-Java_sun_nio_ch_FileDispatcher_read0(JNIEnv *env, jclass clazz,
- jobject fdo, jlong address, jint len)
-{
- jint fd = fdval(env, fdo);
- void *buf = (void *)jlong_to_ptr(address);
-
- return convertReturnVal(env, read(fd, buf, len), JNI_TRUE);
-}
-
-JNIEXPORT jint JNICALL
-Java_sun_nio_ch_FileDispatcher_pread0(JNIEnv *env, jclass clazz, jobject fdo,
- jlong address, jint len, jlong offset)
-{
- jint fd = fdval(env, fdo);
- void *buf = (void *)jlong_to_ptr(address);
-
- return convertReturnVal(env, pread64(fd, buf, len, offset), JNI_TRUE);
-}
-
-JNIEXPORT jlong JNICALL
-Java_sun_nio_ch_FileDispatcher_readv0(JNIEnv *env, jclass clazz,
- jobject fdo, jlong address, jint len)
-{
- jint fd = fdval(env, fdo);
- struct iovec *iov = (struct iovec *)jlong_to_ptr(address);
- if (len > 16) {
- len = 16;
- }
- return convertLongReturnVal(env, readv(fd, iov, len), JNI_TRUE);
-}
-
-JNIEXPORT jint JNICALL
-Java_sun_nio_ch_FileDispatcher_write0(JNIEnv *env, jclass clazz,
- jobject fdo, jlong address, jint len)
-{
- jint fd = fdval(env, fdo);
- void *buf = (void *)jlong_to_ptr(address);
-
- return convertReturnVal(env, write(fd, buf, len), JNI_FALSE);
-}
-
-JNIEXPORT jint JNICALL
-Java_sun_nio_ch_FileDispatcher_pwrite0(JNIEnv *env, jclass clazz, jobject fdo,
- jlong address, jint len, jlong offset)
-{
- jint fd = fdval(env, fdo);
- void *buf = (void *)jlong_to_ptr(address);
-
- return convertReturnVal(env, pwrite64(fd, buf, len, offset), JNI_FALSE);
-}
-
-JNIEXPORT jlong JNICALL
-Java_sun_nio_ch_FileDispatcher_writev0(JNIEnv *env, jclass clazz,
- jobject fdo, jlong address, jint len)
-{
- jint fd = fdval(env, fdo);
- struct iovec *iov = (struct iovec *)jlong_to_ptr(address);
- if (len > 16) {
- len = 16;
- }
- return convertLongReturnVal(env, writev(fd, iov, len), JNI_FALSE);
-}
-
-static void closeFileDescriptor(JNIEnv *env, int fd) {
- if (fd != -1) {
- int result = close(fd);
- if (result < 0)
- JNU_ThrowIOExceptionWithLastError(env, "Close failed");
- }
-}
-
-JNIEXPORT void JNICALL
-Java_sun_nio_ch_FileDispatcher_close0(JNIEnv *env, jclass clazz, jobject fdo)
-{
- jint fd = fdval(env, fdo);
- closeFileDescriptor(env, fd);
-}
-
-JNIEXPORT void JNICALL
-Java_sun_nio_ch_FileDispatcher_preClose0(JNIEnv *env, jclass clazz, jobject fdo)
-{
- jint fd = fdval(env, fdo);
- if (preCloseFD >= 0) {
- if (dup2(preCloseFD, fd) < 0)
- JNU_ThrowIOExceptionWithLastError(env, "dup2 failed");
- }
-}
-
-JNIEXPORT void JNICALL
-Java_sun_nio_ch_FileDispatcher_closeIntFD(JNIEnv *env, jclass clazz, jint fd)
-{
- closeFileDescriptor(env, fd);
-}