40 static jvmtiEvent events[EVENTS_COUNT] = {
41 JVMTI_EVENT_VM_INIT,
42 JVMTI_EVENT_VM_DEATH
43 };
44
45 static jvmtiCapabilities initCaps;
46
47 /* ============================================================================= */
48
49 /**
50 * Get and check current capabilities.
51 * @returns NSK_FALSE if any error occured.
52 */
53 static int checkCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* initCaps, const char where[]) {
54 int success = NSK_TRUE;
55 jvmtiCapabilities caps;
56
57 memset(&caps, 0, sizeof(jvmtiCapabilities));
58
59 NSK_DISPLAY0("GetCapabilities() for current JVMTI env\n");
60 if (!NSK_JVMTI_VERIFY(
61 NSK_CPP_STUB2(GetCapabilities, jvmti, &caps))) {
62 return NSK_FALSE;
63 }
64
65 return success;
66 }
67
68 /**
69 * Add given capabilities list.
70 * @returns NSK_FALSE if any error occured.
71 */
72 static int addCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps, const char where[]) {
73 NSK_DISPLAY0("AddCapabilities() for current JVMTI env\n");
74 if (!NSK_JVMTI_VERIFY(
75 NSK_CPP_STUB2(AddCapabilities, jvmti, caps))) {
76 return NSK_FALSE;
77 }
78 NSK_DISPLAY0(" ... set\n");
79
80 return NSK_TRUE;
81 }
82
83 /**
84 * Get potential capabilities to the given list.
85 * @returns NSK_FALSE if any error occured.
86 */
87 static int getPotentialCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps) {
88 NSK_DISPLAY0("GetPotentialCapabilities() for current JVMTI env\n");
89 if (!NSK_JVMTI_VERIFY(
90 NSK_CPP_STUB2(GetPotentialCapabilities, jvmti, caps))) {
91 return NSK_FALSE;
92 }
93
94 return NSK_TRUE;
95 }
96
97 /* ============================================================================= */
98
99 /** Agent algorithm. */
100 static void JNICALL
101 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
102 NSK_DISPLAY0("Wait for debugee to become ready\n");
103 if (!nsk_jvmti_waitForSync(timeout))
104 return;
105
106 NSK_DISPLAY0(">>> Testcase #3: Check capabilities in agent thread\n");
107 if (!checkCapabilities(jvmti, &initCaps, "agent thread")) {
108 nsk_jvmti_setFailStatus();
109 }
110
166 }
167 #endif
168 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
169 jvmtiEnv* jvmti = NULL;
170
171 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
172 return JNI_ERR;
173
174 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
175
176 if (!NSK_VERIFY((jvmti =
177 nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
178 return JNI_ERR;
179
180 {
181 jvmtiEventCallbacks eventCallbacks;
182
183 memset(&eventCallbacks, 0, sizeof(eventCallbacks));
184 eventCallbacks.VMInit = callbackVMInit;
185 eventCallbacks.VMDeath = callbackVMDeath;
186 if (!NSK_JVMTI_VERIFY(
187 NSK_CPP_STUB3(SetEventCallbacks, jvmti,
188 &eventCallbacks, sizeof(eventCallbacks)))) {
189 return JNI_ERR;
190 }
191
192 }
193
194 if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
195 return JNI_ERR;
196
197 memset(&initCaps, 0, sizeof(jvmtiCapabilities));
198 if (!getPotentialCapabilities(jvmti, &initCaps)) {
199 return JNI_ERR;
200 }
201
202 NSK_DISPLAY0(">>> Testcase #0: Add all potential capabilities in Agent_OnLoad()\n");
203 if (!addCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
204 nsk_jvmti_setFailStatus();
205 }
206
207 NSK_DISPLAY0(">>> Testcase #1: Check capabilities in Agent_OnLoad()\n");
208 if (!checkCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
|
40 static jvmtiEvent events[EVENTS_COUNT] = {
41 JVMTI_EVENT_VM_INIT,
42 JVMTI_EVENT_VM_DEATH
43 };
44
45 static jvmtiCapabilities initCaps;
46
47 /* ============================================================================= */
48
49 /**
50 * Get and check current capabilities.
51 * @returns NSK_FALSE if any error occured.
52 */
53 static int checkCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* initCaps, const char where[]) {
54 int success = NSK_TRUE;
55 jvmtiCapabilities caps;
56
57 memset(&caps, 0, sizeof(jvmtiCapabilities));
58
59 NSK_DISPLAY0("GetCapabilities() for current JVMTI env\n");
60 if (!NSK_JVMTI_VERIFY(jvmti->GetCapabilities(&caps))) {
61 return NSK_FALSE;
62 }
63
64 return success;
65 }
66
67 /**
68 * Add given capabilities list.
69 * @returns NSK_FALSE if any error occured.
70 */
71 static int addCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps, const char where[]) {
72 NSK_DISPLAY0("AddCapabilities() for current JVMTI env\n");
73 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(caps))) {
74 return NSK_FALSE;
75 }
76 NSK_DISPLAY0(" ... set\n");
77
78 return NSK_TRUE;
79 }
80
81 /**
82 * Get potential capabilities to the given list.
83 * @returns NSK_FALSE if any error occured.
84 */
85 static int getPotentialCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps) {
86 NSK_DISPLAY0("GetPotentialCapabilities() for current JVMTI env\n");
87 if (!NSK_JVMTI_VERIFY(jvmti->GetPotentialCapabilities(caps))) {
88 return NSK_FALSE;
89 }
90
91 return NSK_TRUE;
92 }
93
94 /* ============================================================================= */
95
96 /** Agent algorithm. */
97 static void JNICALL
98 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
99 NSK_DISPLAY0("Wait for debugee to become ready\n");
100 if (!nsk_jvmti_waitForSync(timeout))
101 return;
102
103 NSK_DISPLAY0(">>> Testcase #3: Check capabilities in agent thread\n");
104 if (!checkCapabilities(jvmti, &initCaps, "agent thread")) {
105 nsk_jvmti_setFailStatus();
106 }
107
163 }
164 #endif
165 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
166 jvmtiEnv* jvmti = NULL;
167
168 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
169 return JNI_ERR;
170
171 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
172
173 if (!NSK_VERIFY((jvmti =
174 nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
175 return JNI_ERR;
176
177 {
178 jvmtiEventCallbacks eventCallbacks;
179
180 memset(&eventCallbacks, 0, sizeof(eventCallbacks));
181 eventCallbacks.VMInit = callbackVMInit;
182 eventCallbacks.VMDeath = callbackVMDeath;
183 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks)))) {
184 return JNI_ERR;
185 }
186
187 }
188
189 if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
190 return JNI_ERR;
191
192 memset(&initCaps, 0, sizeof(jvmtiCapabilities));
193 if (!getPotentialCapabilities(jvmti, &initCaps)) {
194 return JNI_ERR;
195 }
196
197 NSK_DISPLAY0(">>> Testcase #0: Add all potential capabilities in Agent_OnLoad()\n");
198 if (!addCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
199 nsk_jvmti_setFailStatus();
200 }
201
202 NSK_DISPLAY0(">>> Testcase #1: Check capabilities in Agent_OnLoad()\n");
203 if (!checkCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
|