jdk/src/share/native/sun/misc/VM.c
changeset 3111 fefdeafb7ab9
parent 2 90ce3da70b43
child 3958 b8acd5ee4f4f
equal deleted inserted replaced
2790:e9771c308d06 3111:fefdeafb7ab9
   107     get_thread_state_info(env, JAVA_THREAD_STATE_WAITING, values, names);
   107     get_thread_state_info(env, JAVA_THREAD_STATE_WAITING, values, names);
   108     get_thread_state_info(env, JAVA_THREAD_STATE_TIMED_WAITING, values, names);
   108     get_thread_state_info(env, JAVA_THREAD_STATE_TIMED_WAITING, values, names);
   109     get_thread_state_info(env, JAVA_THREAD_STATE_TERMINATED, values, names);
   109     get_thread_state_info(env, JAVA_THREAD_STATE_TERMINATED, values, names);
   110 }
   110 }
   111 
   111 
       
   112 typedef void (JNICALL *GetJvmVersionInfo_fp)(JNIEnv*, jvm_version_info*, size_t);
       
   113 
   112 JNIEXPORT void JNICALL
   114 JNIEXPORT void JNICALL
   113 Java_sun_misc_VM_initialize(JNIEnv *env, jclass cls) {
   115 Java_sun_misc_VM_initialize(JNIEnv *env, jclass cls) {
   114     char errmsg[128];
   116     char errmsg[128];
       
   117     GetJvmVersionInfo_fp func_p;
   115 
   118 
   116     if (!JDK_InitJvmHandle()) {
   119     if (!JDK_InitJvmHandle()) {
   117         JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup");
   120         JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup");
       
   121         return;
       
   122     }
       
   123 
       
   124     func_p = (GetJvmVersionInfo_fp) JDK_FindJvmEntry("JVM_GetVersionInfo");
       
   125      if (func_p != NULL) {
       
   126         char errmsg[100];
       
   127         jfieldID fid;
       
   128         jvm_version_info info;
       
   129 
       
   130         memset(&info, 0, sizeof(info));
       
   131 
       
   132         /* obtain the JVM version info */
       
   133         (*func_p)(env, &info, sizeof(info));
       
   134 
       
   135         if (info.is_kernel_jvm == 1) {
       
   136             /* set the static field VM.kernelVM to true for kernel VM */
       
   137             fid = (*env)->GetStaticFieldID(env, cls, "kernelVM", "Z");
       
   138             if (fid != 0) {
       
   139                 (*env)->SetStaticBooleanField(env, cls, fid, info.is_kernel_jvm);
       
   140             } else {
       
   141                 sprintf(errmsg, "Static kernelVM boolean field not found");
       
   142                 JNU_ThrowInternalError(env, errmsg);
       
   143             }
       
   144         }
   118     }
   145     }
   119 }
   146 }
       
   147