73 74 75 typedef void (JNICALL *GetJvmVersionInfo_fp)(JNIEnv*, jvm_version_info*, size_t); 76 77 JNIEXPORT jboolean JNICALL 78 Java_sun_misc_Version_getJvmVersionInfo(JNIEnv *env, jclass cls) 79 { 80 jvm_version_info info; 81 GetJvmVersionInfo_fp func_p; 82 83 if (!JDK_InitJvmHandle()) { 84 JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup"); 85 } 86 func_p = (GetJvmVersionInfo_fp) JDK_FindJvmEntry("JVM_GetVersionInfo"); 87 if (func_p == NULL) { 88 return JNI_FALSE; 89 } 90 91 (*func_p)(env, &info, sizeof(info)); 92 setStaticIntField(env, cls, "jvm_major_version", JVM_VERSION_MAJOR(info.jvm_version)); 93 setStaticIntField(env, cls, "jvm_minor_version", JVM_VERSION_MINOR(info.jvm_version)); 94 setStaticIntField(env, cls, "jvm_micro_version", JVM_VERSION_MICRO(info.jvm_version)); 95 setStaticIntField(env, cls, "jvm_build_number", JVM_VERSION_BUILD(info.jvm_version)); 96 setStaticIntField(env, cls, "jvm_update_version", info.update_version); 97 jvm_special_version = info.special_update_version; 98 99 return JNI_TRUE; 100 } 101 102 JNIEXPORT jstring JNICALL 103 Java_sun_misc_Version_getJvmSpecialVersion(JNIEnv *env, jclass cls) { 104 char s[2]; 105 jstring special; 106 s[0] = jvm_special_version; 107 s[1] = '\0'; 108 special = (*env)->NewStringUTF(env, s); 109 return special; 110 } 111 112 JNIEXPORT void JNICALL 113 Java_sun_misc_Version_getJdkVersionInfo(JNIEnv *env, jclass cls) 114 { 115 jdk_version_info info; 116 117 JDK_GetVersionInfo0(&info, sizeof(info)); 118 setStaticIntField(env, cls, "jdk_major_version", JDK_VERSION_MAJOR(info.jdk_version)); 119 setStaticIntField(env, cls, "jdk_minor_version", JDK_VERSION_MINOR(info.jdk_version)); 120 setStaticIntField(env, cls, "jdk_micro_version", JDK_VERSION_MICRO(info.jdk_version)); 121 setStaticIntField(env, cls, "jdk_build_number", JDK_VERSION_BUILD(info.jdk_version)); 122 setStaticIntField(env, cls, "jdk_update_version", info.update_version); 123 jdk_special_version = info.special_update_version; 124 } 125 126 JNIEXPORT jstring JNICALL 127 Java_sun_misc_Version_getJdkSpecialVersion(JNIEnv *env, jclass cls) { 128 char s[2]; 129 jstring special; 130 s[0] = jdk_special_version; 131 s[1] = '\0'; 132 special = (*env)->NewStringUTF(env, s); 133 return special; 134 } | 73 74 75 typedef void (JNICALL *GetJvmVersionInfo_fp)(JNIEnv*, jvm_version_info*, size_t); 76 77 JNIEXPORT jboolean JNICALL 78 Java_sun_misc_Version_getJvmVersionInfo(JNIEnv *env, jclass cls) 79 { 80 jvm_version_info info; 81 GetJvmVersionInfo_fp func_p; 82 83 if (!JDK_InitJvmHandle()) { 84 JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup"); 85 } 86 func_p = (GetJvmVersionInfo_fp) JDK_FindJvmEntry("JVM_GetVersionInfo"); 87 if (func_p == NULL) { 88 return JNI_FALSE; 89 } 90 91 (*func_p)(env, &info, sizeof(info)); 92 setStaticIntField(env, cls, "jvm_major_version", JVM_VERSION_MAJOR(info.jvm_version)); 93 JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); 94 setStaticIntField(env, cls, "jvm_minor_version", JVM_VERSION_MINOR(info.jvm_version)); 95 JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); 96 setStaticIntField(env, cls, "jvm_micro_version", JVM_VERSION_MICRO(info.jvm_version)); 97 JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); 98 setStaticIntField(env, cls, "jvm_build_number", JVM_VERSION_BUILD(info.jvm_version)); 99 JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); 100 setStaticIntField(env, cls, "jvm_update_version", info.update_version); 101 JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); 102 jvm_special_version = info.special_update_version; 103 104 return JNI_TRUE; 105 } 106 107 JNIEXPORT jstring JNICALL 108 Java_sun_misc_Version_getJvmSpecialVersion(JNIEnv *env, jclass cls) { 109 char s[2]; 110 jstring special; 111 s[0] = jvm_special_version; 112 s[1] = '\0'; 113 special = (*env)->NewStringUTF(env, s); 114 return special; 115 } 116 117 JNIEXPORT void JNICALL 118 Java_sun_misc_Version_getJdkVersionInfo(JNIEnv *env, jclass cls) 119 { 120 jdk_version_info info; 121 122 JDK_GetVersionInfo0(&info, sizeof(info)); 123 setStaticIntField(env, cls, "jdk_major_version", JDK_VERSION_MAJOR(info.jdk_version)); 124 JNU_CHECK_EXCEPTION(env); 125 setStaticIntField(env, cls, "jdk_minor_version", JDK_VERSION_MINOR(info.jdk_version)); 126 JNU_CHECK_EXCEPTION(env); 127 setStaticIntField(env, cls, "jdk_micro_version", JDK_VERSION_MICRO(info.jdk_version)); 128 JNU_CHECK_EXCEPTION(env); 129 setStaticIntField(env, cls, "jdk_build_number", JDK_VERSION_BUILD(info.jdk_version)); 130 JNU_CHECK_EXCEPTION(env); 131 setStaticIntField(env, cls, "jdk_update_version", info.update_version); 132 JNU_CHECK_EXCEPTION(env); 133 jdk_special_version = info.special_update_version; 134 } 135 136 JNIEXPORT jstring JNICALL 137 Java_sun_misc_Version_getJdkSpecialVersion(JNIEnv *env, jclass cls) { 138 char s[2]; 139 jstring special; 140 s[0] = jdk_special_version; 141 s[1] = '\0'; 142 special = (*env)->NewStringUTF(env, s); 143 return special; 144 } |