aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/com/jogamp/common/os/Platform.java7
-rw-r--r--src/native/common/Platform.c19
2 files changed, 26 insertions, 0 deletions
diff --git a/src/java/com/jogamp/common/os/Platform.java b/src/java/com/jogamp/common/os/Platform.java
index 3bd9966..e31e123 100644
--- a/src/java/com/jogamp/common/os/Platform.java
+++ b/src/java/com/jogamp/common/os/Platform.java
@@ -57,6 +57,7 @@ public class Platform {
private static final boolean is32Bit;
private static final int pointerSizeInBits;
+ private static final long pageSize;
static {
@@ -83,8 +84,10 @@ public class Platform {
if(libsLoaded) {
pointerSizeInBits = getPointerSizeInBitsImpl();
+ pageSize = getPageSizeImpl();
}else{
pointerSizeInBits = -1;
+ pageSize = -1;
}
is32Bit = initArch();
@@ -161,6 +164,7 @@ public class Platform {
}
private static native int getPointerSizeInBitsImpl();
+ private static native long getPageSizeImpl();
/**
@@ -249,5 +253,8 @@ public class Platform {
return pointerSizeInBits/8;
}
+ public static long getPageSize() {
+ return pageSize;
+ }
}
diff --git a/src/native/common/Platform.c b/src/native/common/Platform.c
index f0e4e11..c385e12 100644
--- a/src/native/common/Platform.c
+++ b/src/native/common/Platform.c
@@ -3,8 +3,27 @@
#include <assert.h>
+#include "com_jogamp_common_os_Platform.h"
+
+#if defined(_WIN32)
+ #include <windows.h>
+#else /* assume POSIX sysconf() availability */
+ #include <unistd.h>
+#endif
+
JNIEXPORT jint JNICALL
Java_com_jogamp_common_os_Platform_getPointerSizeInBitsImpl(JNIEnv *env, jclass _unused) {
return sizeof(void *) * 8;
}
+JNIEXPORT jlong JNICALL
+Java_com_jogamp_common_os_Platform_getPageSizeImpl(JNIEnv *env, jclass _unused) {
+#if defined(_WIN32)
+ SYSTEM_INFO si;
+ GetSystemInfo(&si);
+ return (jlong) si.dwPageSize;
+#else
+ return (jlong) sysconf(_SC_PAGESIZE);
+#endif
+}
+