--- a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c Wed Jun 06 10:05:54 2012 +0800
+++ b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c Wed Jun 06 17:59:29 2012 +0100
@@ -25,11 +25,14 @@
#include <sys/types.h>
#include <string.h>
+#include <sys/resource.h>
+
#include "jni.h"
#include "jni_util.h"
#include "jvm.h"
#include "jlong.h"
#include "sun_nio_ch_IOUtil.h"
+#include "java_lang_Integer.h"
#include "nio.h"
#include "nio_util.h"
@@ -118,6 +121,20 @@
}
}
+JNIEXPORT jint JNICALL
+Java_sun_nio_ch_IOUtil_fdLimit(JNIEnv *env, jclass this)
+{
+ struct rlimit rlp;
+ if (getrlimit(RLIMIT_NOFILE, &rlp) < 0) {
+ JNU_ThrowIOExceptionWithLastError(env, "getrlimit failed");
+ return -1;
+ }
+ if (rlp.rlim_max < 0 || rlp.rlim_max > java_lang_Integer_MAX_VALUE) {
+ return java_lang_Integer_MAX_VALUE;
+ } else {
+ return (jint)rlp.rlim_max;
+ }
+}
/* Declared in nio_util.h for use elsewhere in NIO */