< prev index next >

src/os/windows/vm/os_windows.cpp

Print this page
rev 10320 : 8150843: [windows] os::getTimesSecs() returns negative values for kernel, user times
Reviewed-by:


 935   GetLocalTime(&st);
 936   jio_snprintf(buf, buflen, "%d-%02d-%02d %02d:%02d:%02d",
 937                st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
 938   return buf;
 939 }
 940 
 941 bool os::getTimesSecs(double* process_real_time,
 942                       double* process_user_time,
 943                       double* process_system_time) {
 944   HANDLE h_process = GetCurrentProcess();
 945   FILETIME create_time, exit_time, kernel_time, user_time;
 946   BOOL result = GetProcessTimes(h_process,
 947                                 &create_time,
 948                                 &exit_time,
 949                                 &kernel_time,
 950                                 &user_time);
 951   if (result != 0) {
 952     FILETIME wt;
 953     GetSystemTimeAsFileTime(&wt);
 954     jlong rtc_millis = windows_to_java_time(wt);
 955     jlong user_millis = windows_to_java_time(user_time);
 956     jlong system_millis = windows_to_java_time(kernel_time);
 957     *process_real_time = ((double) rtc_millis) / ((double) MILLIUNITS);
 958     *process_user_time = ((double) user_millis) / ((double) MILLIUNITS);
 959     *process_system_time = ((double) system_millis) / ((double) MILLIUNITS);
 960     return true;
 961   } else {
 962     return false;
 963   }
 964 }
 965 
 966 void os::shutdown() {
 967   // allow PerfMemory to attempt cleanup of any persistent resources
 968   perfMemory_exit();
 969 
 970   // flush buffered output, finish log files
 971   ostream_abort();
 972 
 973   // Check for abort hook
 974   abort_hook_t abort_hook = Arguments::abort_hook();
 975   if (abort_hook != NULL) {
 976     abort_hook();
 977   }
 978 }
 979 




 935   GetLocalTime(&st);
 936   jio_snprintf(buf, buflen, "%d-%02d-%02d %02d:%02d:%02d",
 937                st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
 938   return buf;
 939 }
 940 
 941 bool os::getTimesSecs(double* process_real_time,
 942                       double* process_user_time,
 943                       double* process_system_time) {
 944   HANDLE h_process = GetCurrentProcess();
 945   FILETIME create_time, exit_time, kernel_time, user_time;
 946   BOOL result = GetProcessTimes(h_process,
 947                                 &create_time,
 948                                 &exit_time,
 949                                 &kernel_time,
 950                                 &user_time);
 951   if (result != 0) {
 952     FILETIME wt;
 953     GetSystemTimeAsFileTime(&wt);
 954     jlong rtc_millis = windows_to_java_time(wt);
 955     jlong user_millis = jlong_from(user_time.dwHighDateTime, user_time.dwLowDateTime);
 956     jlong system_millis = jlong_from(kernel_time.dwHighDateTime, kernel_time.dwLowDateTime);
 957     *process_real_time = ((double) rtc_millis) / ((double) MILLIUNITS);
 958     *process_user_time = ((double) user_millis) / ((double) (10 * MICROUNITS));
 959     *process_system_time = ((double) system_millis) / ((double) (10 * MICROUNITS));
 960     return true;
 961   } else {
 962     return false;
 963   }
 964 }
 965 
 966 void os::shutdown() {
 967   // allow PerfMemory to attempt cleanup of any persistent resources
 968   perfMemory_exit();
 969 
 970   // flush buffered output, finish log files
 971   ostream_abort();
 972 
 973   // Check for abort hook
 974   abort_hook_t abort_hook = Arguments::abort_hook();
 975   if (abort_hook != NULL) {
 976     abort_hook();
 977   }
 978 }
 979 


< prev index next >