| /* |
| * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| #ifndef NSK_JNI_TOOLS_DEFINED |
| #define NSK_JNI_TOOLS_DEFINED |
| |
| /*************************************************************/ |
| |
| #include "jni.h" |
| |
| /*************************************************************/ |
| |
| #include "nsk_tools.h" |
| |
| /*************************************************************/ |
| |
| /* printf format specifier for jlong */ |
| #ifdef _WIN32 |
| |
| #define LL "I64" |
| #include <STDDEF.H> |
| |
| #else // !_WIN32 |
| |
| #include <stdint.h> |
| |
| #ifdef _LP64 |
| #define LL "l" |
| #else |
| #define LL "ll" |
| #endif |
| |
| #endif // !_WIN32 |
| |
| /** |
| * Additional Java basic types |
| */ |
| |
| #ifdef _WIN32 |
| typedef unsigned __int64 julong; |
| #else |
| typedef unsigned long long julong; |
| #endif |
| |
| /*************************************************************/ |
| |
| /** |
| * Execute action with JNI call, check result for true and |
| * pending exception and complain error if required. |
| * Also trace action execution if tracing mode enabled. |
| */ |
| #define NSK_JNI_VERIFY(jni, action) \ |
| (nsk_ltrace(NSK_TRACE_BEFORE,__FILE__,__LINE__,"%s\n",#action), \ |
| nsk_jni_lverify(NSK_TRUE,jni,action,__FILE__,__LINE__,"%s\n",#action)) |
| |
| /** |
| * Execute action with JNI call, check result for false and |
| * pending exception and complain error if required. |
| * Also trace action execution if tracing mode enabled. |
| */ |
| #define NSK_JNI_VERIFY_NEGATIVE(jni,action) \ |
| (nsk_ltrace(NSK_TRACE_BEFORE,__FILE__,__LINE__,"%s\n",#action), \ |
| nsk_jni_lverify(NSK_FALSE,jni,action,__FILE__,__LINE__,"%s\n",#action)) |
| |
| /** |
| * Execute action with JNI call, check result for |
| * pending exception and complain error if required. |
| * Also trace action execution if tracing mode enabled. |
| */ |
| #define NSK_JNI_VERIFY_VOID(jni,action) \ |
| (nsk_ltrace(NSK_TRACE_BEFORE,__FILE__,__LINE__,"%s\n",#action), \ |
| action, \ |
| nsk_jni_lverify_void(jni, __FILE__,__LINE__,"%s\n",#action)) |
| |
| /*************************************************************/ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /*************************************************************/ |
| |
| /** |
| * If positive, assert status is true; or |
| * if !positive, assert status is not true. |
| * Assert means: complain if the assertion is false. |
| * Return the assertion value, either NSK_TRUE or NSK_FALSE. |
| * Anyway, trace if "nsk_tools" mode is verbose and |
| * print information about pending exceptions if status is false. |
| */ |
| int nsk_jni_lverify(int positive, JNIEnv* jni, int status, |
| const char file[], int line, const char format[], ...); |
| |
| /** |
| * If positive, assert status is true; or |
| * if !positive, assert status is not true. |
| * Assert means: complain if the assertion is false. |
| * Return the assertion value, either NSK_TRUE or NSK_FALSE. |
| * Anyway, trace if "nsk_tools" mode is verbose and |
| * print information about pending exceptions if status is false. |
| */ |
| int nsk_jni_lverify_void(JNIEnv* jni, const char file[], int line, |
| const char format[], ...); |
| |
| /** |
| * Checks if pending exception exists and then prints error message |
| * with exception description, clears pending exception amd return 1. |
| * Otherwise, does noting and returns 0, |
| */ |
| int nsk_jni_check_exception(JNIEnv* jni, const char file[], int line); |
| |
| /** |
| * Convert the digits of the given value argument to a null-terminated |
| * character string and store the result (up to 32 bytes) in string. |
| * If value is negative, the first character of the stored string is |
| * the minus sign (-). The function returns a pointer to the begining |
| * of the result string. |
| */ |
| char *jlong_to_string(jlong value, char *string); |
| |
| /** |
| * Convert the digits of the given value argument to a null-terminated |
| * character string and store the result (up to 32 bytes) in string. |
| * The function returns a pointer to the begining of the result string. |
| */ |
| char *julong_to_string(julong value, char *string); |
| |
| /** |
| * Sleep for given number of milliseconds. |
| */ |
| void mssleep(long millis); |
| |
| /** |
| * Create JavaVMOption array of size 'size' and fills |
| * first argsCnt elements from args[]. |
| * Callee is responsible to free JavaVMOption*. |
| * No other memory deallocations are required. |
| */ |
| JavaVMOption* jni_create_vmoptions(int size, char *args[], int argsCnt); |
| |
| /** |
| * Print JavaVMInitArgs values to stdout. |
| */ |
| void jni_print_vmargs(JavaVMInitArgs vmargs); |
| |
| /*************************************************************/ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| /*************************************************************/ |
| |
| #endif |