jdk/src/windows/native/com/sun/management/OperatingSystem_md.c
changeset 9027 540bd52f1881
parent 5506 202f599c92aa
child 9559 24c0a7a7297f
--- a/jdk/src/windows/native/com/sun/management/OperatingSystem_md.c	Mon Apr 04 18:12:46 2011 +0100
+++ b/jdk/src/windows/native/com/sun/management/OperatingSystem_md.c	Mon Apr 04 18:35:16 2011 +0100
@@ -30,6 +30,7 @@
 #include "management.h"
 #include "com_sun_management_OperatingSystem.h"
 
+#include <psapi.h>
 #include <errno.h>
 #include <stdlib.h>
 
@@ -53,41 +54,12 @@
   return result;
 }
 
-// From psapi.h
-typedef struct _PROCESS_MEMORY_COUNTERS {
-    DWORD cb;
-    DWORD PageFaultCount;
-    SIZE_T PeakWorkingSetSize;
-    SIZE_T WorkingSetSize;
-    SIZE_T QuotaPeakPagedPoolUsage;
-    SIZE_T QuotaPagedPoolUsage;
-    SIZE_T QuotaPeakNonPagedPoolUsage;
-    SIZE_T QuotaNonPagedPoolUsage;
-    SIZE_T PagefileUsage;
-    SIZE_T PeakPagefileUsage;
-} PROCESS_MEMORY_COUNTERS;
-
-static HINSTANCE hInstPsapi = NULL;
-typedef BOOL (WINAPI *LPFNGETPROCESSMEMORYINFO)(HANDLE, PROCESS_MEMORY_COUNTERS*, DWORD);
-
-static jboolean is_nt = JNI_FALSE;
 static HANDLE main_process;
 
 JNIEXPORT void JNICALL
 Java_com_sun_management_OperatingSystem_initialize
   (JNIEnv *env, jclass cls)
 {
-    OSVERSIONINFO oi;
-    oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-    GetVersionEx(&oi);
-    switch(oi.dwPlatformId) {
-        case VER_PLATFORM_WIN32_WINDOWS: is_nt = JNI_FALSE; break;
-        case VER_PLATFORM_WIN32_NT:      is_nt = JNI_TRUE;  break;
-        default:
-            throw_internal_error(env, "Unsupported Platform");
-            return;
-    }
-
     main_process = GetCurrentProcess();
 }
 
@@ -95,31 +67,12 @@
 Java_com_sun_management_OperatingSystem_getCommittedVirtualMemorySize0
   (JNIEnv *env, jobject mbean)
 {
-
-    /*
-     * In bytes.  NT/2000/XP only - using GetProcessMemoryInfo from psapi.dll
-     */
-    static LPFNGETPROCESSMEMORYINFO lpfnGetProcessMemoryInfo = NULL;
-    static volatile jboolean psapi_inited = JNI_FALSE;
     PROCESS_MEMORY_COUNTERS pmc;
-
-    if (!is_nt) return -1;
-
-    if (!psapi_inited) {
-        psapi_inited = JNI_TRUE;
-        if ((hInstPsapi = LoadLibrary("PSAPI.DLL")) == NULL) return -1;
-        if ((lpfnGetProcessMemoryInfo = (LPFNGETPROCESSMEMORYINFO)
-               GetProcAddress( hInstPsapi, "GetProcessMemoryInfo")) == NULL) {
-            FreeLibrary(hInstPsapi);
-            return -1;
-        }
+    if (GetProcessMemoryInfo(main_process, &pmc, sizeof(PROCESS_MEMORY_COUNTERS)) == 0) {
+        return (jlong)-1L;
+    } else {
+        return (jlong) pmc.PagefileUsage;
     }
-
-    if (lpfnGetProcessMemoryInfo == NULL) return -1;
-
-    lpfnGetProcessMemoryInfo(main_process, &pmc,
-                             sizeof(PROCESS_MEMORY_COUNTERS));
-    return (jlong) pmc.PagefileUsage;
 }
 
 JNIEXPORT jlong JNICALL
@@ -148,20 +101,15 @@
     FILETIME process_creation_time, process_exit_time,
              process_user_time, process_kernel_time;
 
-    // Windows NT only
-    if (is_nt) {
-        // Using static variables declared above
-        // Units are 100-ns intervals.  Convert to ns.
-        GetProcessTimes(main_process, &process_creation_time,
-                        &process_exit_time,
-                        &process_kernel_time, &process_user_time);
-        return (jlong_from(process_user_time.dwHighDateTime,
-                           process_user_time.dwLowDateTime) +
-               jlong_from(process_kernel_time.dwHighDateTime,
-                           process_kernel_time.dwLowDateTime)) * 100;
-    } else {
-        return -1;
-    }
+    // Using static variables declared above
+    // Units are 100-ns intervals.  Convert to ns.
+    GetProcessTimes(main_process, &process_creation_time,
+                    &process_exit_time,
+                    &process_kernel_time, &process_user_time);
+    return (jlong_from(process_user_time.dwHighDateTime,
+                        process_user_time.dwLowDateTime) +
+            jlong_from(process_kernel_time.dwHighDateTime,
+                        process_kernel_time.dwLowDateTime)) * 100;
 }
 
 JNIEXPORT jlong JNICALL