259 return IOS_UNAVAILABLE; 260 if ((errno == EINVAL) && ((ssize_t)count >= 0)) 261 return IOS_UNSUPPORTED_CASE; 262 if (errno == EINTR) 263 return IOS_INTERRUPTED; 264 if (errno == ENOTSOCK) 265 return IOS_UNSUPPORTED; 266 JNU_ThrowIOExceptionWithLastError(env, "Transfer failed"); 267 return IOS_THROWN; 268 } 269 270 if (sf_iobuf.bytes_sent > 0) 271 return (jlong)sf_iobuf.bytes_sent; 272 273 return IOS_UNSUPPORTED_CASE; 274 #else 275 return IOS_UNSUPPORTED_CASE; 276 #endif 277 } 278 | 259 return IOS_UNAVAILABLE; 260 if ((errno == EINVAL) && ((ssize_t)count >= 0)) 261 return IOS_UNSUPPORTED_CASE; 262 if (errno == EINTR) 263 return IOS_INTERRUPTED; 264 if (errno == ENOTSOCK) 265 return IOS_UNSUPPORTED; 266 JNU_ThrowIOExceptionWithLastError(env, "Transfer failed"); 267 return IOS_THROWN; 268 } 269 270 if (sf_iobuf.bytes_sent > 0) 271 return (jlong)sf_iobuf.bytes_sent; 272 273 return IOS_UNSUPPORTED_CASE; 274 #else 275 return IOS_UNSUPPORTED_CASE; 276 #endif 277 } 278 279 JNIEXPORT jint JNICALL 280 Java_sun_nio_ch_FileChannelImpl_setDirect0(JNIEnv *env, jobject this, jobject fObj) 281 { 282 jint fd = fdval(env, fObj); 283 jint result; 284 285 #ifdef O_DIRECT 286 result = fcntl(fd, F_SETFL, O_DIRECT); 287 if (result == -1) { 288 JNU_ThrowIOExceptionWithLastError(env, "DirectIO setup failed"); 289 } 290 return result; 291 #elif F_NOCACHE 292 result = fcntl(fd, F_NOCACHE, 1); 293 if (result == -1) { 294 JNU_ThrowIOExceptionWithLastError(env, "DirectIO setup failed"); 295 } 296 return result; 297 //#elif DIRECTIO_ON 298 // result = directio(fd, DIRECTIO_ON); 299 // if (result == -1) { 300 // JNU_ThrowIOExceptionWithLastError(env, "DirectIO setup failed"); 301 // } 302 return result; 303 #else 304 return -1; 305 #endif 306 } |