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 |