< prev index next >

src/java.base/unix/native/libnio/ch/FileChannelImpl.c

Print this page




  33 #include <fcntl.h>
  34 #include "sun_nio_ch_FileChannelImpl.h"
  35 #include "java_lang_Integer.h"
  36 #include "nio.h"
  37 #include "nio_util.h"
  38 #include <dlfcn.h>
  39 
  40 #if defined(__linux__) || defined(__solaris__)
  41 #include <sys/sendfile.h>
  42 #elif defined(_AIX)
  43 #include <sys/socket.h>
  44 #elif defined(_ALLBSD_SOURCE)
  45 #include <sys/types.h>
  46 #include <sys/socket.h>
  47 #include <sys/uio.h>
  48 
  49 #define lseek64 lseek
  50 #define mmap64 mmap
  51 #endif
  52 
  53 static jfieldID chan_fd;        /* jobject 'fd' in sun.io.FileChannelImpl */
  54 
  55 JNIEXPORT jlong JNICALL
  56 Java_sun_nio_ch_FileChannelImpl_initIDs(JNIEnv *env, jclass clazz)
  57 {
  58     jlong pageSize = sysconf(_SC_PAGESIZE);
  59     chan_fd = (*env)->GetFieldID(env, clazz, "fd", "Ljava/io/FileDescriptor;");
  60     return pageSize;
  61 }
  62 
  63 static jlong
  64 handle(JNIEnv *env, jlong rv, char *msg)
  65 {
  66     if (rv >= 0)
  67         return rv;
  68     if (errno == EINTR)
  69         return IOS_INTERRUPTED;
  70     JNU_ThrowIOExceptionWithLastError(env, msg);
  71     return IOS_THROWN;
  72 }
  73 




  33 #include <fcntl.h>
  34 #include "sun_nio_ch_FileChannelImpl.h"
  35 #include "java_lang_Integer.h"
  36 #include "nio.h"
  37 #include "nio_util.h"
  38 #include <dlfcn.h>
  39 
  40 #if defined(__linux__) || defined(__solaris__)
  41 #include <sys/sendfile.h>
  42 #elif defined(_AIX)
  43 #include <sys/socket.h>
  44 #elif defined(_ALLBSD_SOURCE)
  45 #include <sys/types.h>
  46 #include <sys/socket.h>
  47 #include <sys/uio.h>
  48 
  49 #define lseek64 lseek
  50 #define mmap64 mmap
  51 #endif
  52 
  53 static jfieldID chan_fd;        /* jobject 'fd' in sun.nio.ch.FileChannelImpl */
  54 
  55 JNIEXPORT jlong JNICALL
  56 Java_sun_nio_ch_FileChannelImpl_initIDs(JNIEnv *env, jclass clazz)
  57 {
  58     jlong pageSize = sysconf(_SC_PAGESIZE);
  59     chan_fd = (*env)->GetFieldID(env, clazz, "fd", "Ljava/io/FileDescriptor;");
  60     return pageSize;
  61 }
  62 
  63 static jlong
  64 handle(JNIEnv *env, jlong rv, char *msg)
  65 {
  66     if (rv >= 0)
  67         return rv;
  68     if (errno == EINTR)
  69         return IOS_INTERRUPTED;
  70     JNU_ThrowIOExceptionWithLastError(env, msg);
  71     return IOS_THROWN;
  72 }
  73 


< prev index next >