31
32 /* ============================================================================= */
33
34 static jlong timeout = 0;
35
36 /* ============================================================================= */
37
38 static void JNICALL
39 callbackExtensionEvent(jvmtiEnv* jvmti, ... ) {
40 NSK_DISPLAY0(" event: callbackExtensionEvent\n");
41 }
42
43 /** Check extension events. */
44 static int checkExtensions(jvmtiEnv* jvmti, const char phase[]) {
45 int success = NSK_TRUE;
46 jint extCount = 0;
47 jvmtiExtensionEventInfo* extList = NULL;
48 int i;
49
50 NSK_DISPLAY0("Get extension events list\n");
51 if (!NSK_JVMTI_VERIFY(
52 NSK_CPP_STUB3(GetExtensionEvents, jvmti, &extCount, &extList))) {
53 return NSK_FALSE;
54 }
55 NSK_DISPLAY1(" ... got count: %d\n", (int)extCount);
56 NSK_DISPLAY1(" ... got list: 0x%p\n", (void*)extList);
57
58 if (extCount <= 0) {
59 NSK_DISPLAY1("# WARNING: No extension events implemented to check: %d\n", extCount);
60 } else {
61
62 if (!NSK_VERIFY(extList != NULL))
63 return NSK_FALSE;
64
65 NSK_DISPLAY1("Set/clear callback for each extension event: %d events\n", (int)extCount);
66 for (i = 0; i < extCount; i++) {
67 NSK_DISPLAY1(" event #%d:\n", i);
68 NSK_DISPLAY1(" event_index: %d\n", (int)extList[i].extension_event_index);
69 NSK_DISPLAY1(" id: \"%s\"\n", nsk_null_string(extList[i].id));
70 NSK_DISPLAY1(" short_desc: \"%s\"\n", nsk_null_string(extList[i].short_description));
71 NSK_DISPLAY1(" param_count: %d\n", (int)extList[i].param_count);
72
73 NSK_DISPLAY1(" ... setting callback: 0x%p\n", (void*)callbackExtensionEvent);
74 if (!NSK_JVMTI_VERIFY(
75 NSK_CPP_STUB3(SetExtensionEventCallback, jvmti,
76 extList[i].extension_event_index,
77 callbackExtensionEvent))) {
78 success = NSK_FALSE;
79 }
80 NSK_DISPLAY0(" ... done\n");
81
82 NSK_DISPLAY1(" ... clearing callback: 0x%p\n", (void*)NULL);
83 if (!NSK_JVMTI_VERIFY(
84 NSK_CPP_STUB3(SetExtensionEventCallback, jvmti,
85 extList[i].extension_event_index,
86 NULL))) {
87 success = NSK_FALSE;
88 }
89 NSK_DISPLAY0(" ... done\n");
90 }
91 }
92
93 NSK_DISPLAY1("Deallocate extension events list: 0x%p\n", (void*)extList);
94 if (!NSK_JVMTI_VERIFY(
95 NSK_CPP_STUB2(Deallocate, jvmti, (unsigned char*)extList))) {
96 return NSK_FALSE;
97 }
98 NSK_DISPLAY0(" ... deallocated\n");
99
100 return success;
101 }
102
103 /* ============================================================================= */
104
105 /** Agent algorithm. */
106 static void JNICALL
107 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
108 NSK_DISPLAY0("Wait for debugee class ready\n");
109 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
110 return;
111
112 NSK_DISPLAY0(">>> Testcase #2: Check setting extension event callbacks in live phase\n");
113 {
114 if (!checkExtensions(jvmti, "live")) {
115 nsk_jvmti_setFailStatus();
|
31
32 /* ============================================================================= */
33
34 static jlong timeout = 0;
35
36 /* ============================================================================= */
37
38 static void JNICALL
39 callbackExtensionEvent(jvmtiEnv* jvmti, ... ) {
40 NSK_DISPLAY0(" event: callbackExtensionEvent\n");
41 }
42
43 /** Check extension events. */
44 static int checkExtensions(jvmtiEnv* jvmti, const char phase[]) {
45 int success = NSK_TRUE;
46 jint extCount = 0;
47 jvmtiExtensionEventInfo* extList = NULL;
48 int i;
49
50 NSK_DISPLAY0("Get extension events list\n");
51 if (!NSK_JVMTI_VERIFY(jvmti->GetExtensionEvents(&extCount, &extList))) {
52 return NSK_FALSE;
53 }
54 NSK_DISPLAY1(" ... got count: %d\n", (int)extCount);
55 NSK_DISPLAY1(" ... got list: 0x%p\n", (void*)extList);
56
57 if (extCount <= 0) {
58 NSK_DISPLAY1("# WARNING: No extension events implemented to check: %d\n", extCount);
59 } else {
60
61 if (!NSK_VERIFY(extList != NULL))
62 return NSK_FALSE;
63
64 NSK_DISPLAY1("Set/clear callback for each extension event: %d events\n", (int)extCount);
65 for (i = 0; i < extCount; i++) {
66 NSK_DISPLAY1(" event #%d:\n", i);
67 NSK_DISPLAY1(" event_index: %d\n", (int)extList[i].extension_event_index);
68 NSK_DISPLAY1(" id: \"%s\"\n", nsk_null_string(extList[i].id));
69 NSK_DISPLAY1(" short_desc: \"%s\"\n", nsk_null_string(extList[i].short_description));
70 NSK_DISPLAY1(" param_count: %d\n", (int)extList[i].param_count);
71
72 NSK_DISPLAY1(" ... setting callback: 0x%p\n", (void*)callbackExtensionEvent);
73 if (!NSK_JVMTI_VERIFY(
74 jvmti->SetExtensionEventCallback(extList[i].extension_event_index, callbackExtensionEvent))) {
75 success = NSK_FALSE;
76 }
77 NSK_DISPLAY0(" ... done\n");
78
79 NSK_DISPLAY1(" ... clearing callback: 0x%p\n", (void*)NULL);
80 if (!NSK_JVMTI_VERIFY(
81 jvmti->SetExtensionEventCallback(extList[i].extension_event_index, NULL))) {
82 success = NSK_FALSE;
83 }
84 NSK_DISPLAY0(" ... done\n");
85 }
86 }
87
88 NSK_DISPLAY1("Deallocate extension events list: 0x%p\n", (void*)extList);
89 if (!NSK_JVMTI_VERIFY(jvmti->Deallocate((unsigned char*)extList))) {
90 return NSK_FALSE;
91 }
92 NSK_DISPLAY0(" ... deallocated\n");
93
94 return success;
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 class ready\n");
103 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
104 return;
105
106 NSK_DISPLAY0(">>> Testcase #2: Check setting extension event callbacks in live phase\n");
107 {
108 if (!checkExtensions(jvmti, "live")) {
109 nsk_jvmti_setFailStatus();
|