< prev index next >

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

Print this page

        

*** 274,278 **** --- 274,306 ---- #else return IOS_UNSUPPORTED_CASE; #endif } + JNIEXPORT jint JNICALL + Java_sun_nio_ch_FileChannelImpl_setDirect0(JNIEnv *env, jobject this, jobject fObj) + { + jint fd = fdval(env, fObj); + jint result; + + #ifdef O_DIRECT + result = fcntl(fd, F_SETFL, O_DIRECT); + if (result == -1) { + JNU_ThrowIOExceptionWithLastError(env, "DirectIO setup failed"); + } + return result; + #elif F_NOCACHE + result = fcntl(fd, F_NOCACHE, 1); + if (result == -1) { + JNU_ThrowIOExceptionWithLastError(env, "DirectIO setup failed"); + } + return result; + //#elif DIRECTIO_ON + // result = directio(fd, DIRECTIO_ON); + // if (result == -1) { + // JNU_ThrowIOExceptionWithLastError(env, "DirectIO setup failed"); + // } + return result; + #else + return -1; + #endif + }
< prev index next >