jvmti.cc (_Jv_JVMTI_GetAllThreads): New function.
2007-01-16 Kyle Galloway <kgallowa@redhat.com> * jvmti.cc (_Jv_JVMTI_GetAllThreads): New function. * testsuite/libjava.jvmti/getallthreads.java: New test. * testsuite/libjava.jvmti/natgetallthreads.cc: Ditto. * testsuite/libjava.jvmti/getallthreads.out: Ditto. * testsuite/libjava.jvmti/getallthreads.h: Ditto. * testsuite/libjava.jvmti/getallthreads.jar: Ditto. From-SVN: r120827
This commit is contained in:
parent
878aa81717
commit
05794ce850
7 changed files with 250 additions and 1 deletions
35
libjava/testsuite/libjava.jvmti/getallthreads.h
Normal file
35
libjava/testsuite/libjava.jvmti/getallthreads.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
|
||||
|
||||
#ifndef __getallthreads__
|
||||
#define __getallthreads__
|
||||
|
||||
#pragma interface
|
||||
|
||||
#include <java/lang/Thread.h>
|
||||
#include <gcj/array.h>
|
||||
|
||||
extern "Java"
|
||||
{
|
||||
class getallthreads;
|
||||
}
|
||||
|
||||
class getallthreads : public ::java::lang::Thread
|
||||
{
|
||||
public:
|
||||
getallthreads ();
|
||||
static void do_getallthreads_tests ();
|
||||
virtual void run ();
|
||||
virtual void natPlaceholder ();
|
||||
virtual void natRunner ();
|
||||
virtual void placeholder ();
|
||||
virtual void runner ();
|
||||
static void main (JArray< ::java::lang::String *> *);
|
||||
static jint thread_num;
|
||||
static ::java::util::ArrayList *threads;
|
||||
jint __attribute__((aligned(__alignof__( ::java::lang::Thread )))) ex_frames;
|
||||
jboolean done;
|
||||
|
||||
static ::java::lang::Class class$;
|
||||
};
|
||||
|
||||
#endif /* __getallthreads__ */
|
BIN
libjava/testsuite/libjava.jvmti/getallthreads.jar
Normal file
BIN
libjava/testsuite/libjava.jvmti/getallthreads.jar
Normal file
Binary file not shown.
80
libjava/testsuite/libjava.jvmti/getallthreads.java
Normal file
80
libjava/testsuite/libjava.jvmti/getallthreads.java
Normal file
|
@ -0,0 +1,80 @@
|
|||
// Test JVMTI GetAllThreads
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class getallthreads extends Thread
|
||||
{
|
||||
public static int thread_num;
|
||||
public static ArrayList threads;
|
||||
|
||||
public int ex_frames;
|
||||
public boolean done = false;
|
||||
|
||||
public static native void do_getallthreads_tests ();
|
||||
|
||||
public void run ()
|
||||
{
|
||||
ex_frames = thread_num;
|
||||
thread_num++;
|
||||
|
||||
if (ex_frames > 0)
|
||||
{
|
||||
if ((ex_frames % 2) == 0)
|
||||
placeholder ();
|
||||
else
|
||||
natPlaceholder ();
|
||||
}
|
||||
else
|
||||
runner ();
|
||||
}
|
||||
|
||||
public native void natPlaceholder ();
|
||||
public native void natRunner ();
|
||||
|
||||
public void placeholder ()
|
||||
{
|
||||
ex_frames--;
|
||||
|
||||
if (ex_frames > 0)
|
||||
{
|
||||
if ((thread_num % 2) == 0)
|
||||
placeholder ();
|
||||
else
|
||||
natPlaceholder ();
|
||||
}
|
||||
else
|
||||
runner ();
|
||||
}
|
||||
|
||||
public void runner ()
|
||||
{
|
||||
done = true;
|
||||
while (done)
|
||||
yield ();
|
||||
}
|
||||
|
||||
public static void main (String[] args)
|
||||
{
|
||||
System.out.println ("JVMTI GetAllThreads tests");
|
||||
threads = new ArrayList (20);
|
||||
|
||||
getallthreads t;
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
t = new getallthreads ();
|
||||
threads.add (t);
|
||||
t.start ();
|
||||
while (!t.done)
|
||||
yield ();
|
||||
}
|
||||
|
||||
do_getallthreads_tests ();
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
t = (getallthreads) threads.get(i);
|
||||
t.done = false;
|
||||
}
|
||||
}
|
||||
}
|
23
libjava/testsuite/libjava.jvmti/getallthreads.out
Normal file
23
libjava/testsuite/libjava.jvmti/getallthreads.out
Normal file
|
@ -0,0 +1,23 @@
|
|||
JVMTI GetAllThreads tests
|
||||
Found thread 1
|
||||
Found thread 2
|
||||
Found thread 3
|
||||
Found thread 4
|
||||
Found thread 5
|
||||
Found thread 6
|
||||
Found thread 7
|
||||
Found thread 8
|
||||
Found thread 9
|
||||
Found thread 10
|
||||
Found thread 11
|
||||
Found thread 12
|
||||
Found thread 13
|
||||
Found thread 14
|
||||
Found thread 15
|
||||
Found thread 16
|
||||
Found thread 17
|
||||
Found thread 18
|
||||
Found thread 19
|
||||
Found thread 20
|
||||
Found thread 21
|
||||
Found thread 22
|
55
libjava/testsuite/libjava.jvmti/natgetallthreads.cc
Normal file
55
libjava/testsuite/libjava.jvmti/natgetallthreads.cc
Normal file
|
@ -0,0 +1,55 @@
|
|||
#include <gcj/cni.h>
|
||||
|
||||
#include <jvm.h>
|
||||
#include <jvmti.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "jvmti-int.h"
|
||||
#include "getallthreads.h"
|
||||
|
||||
void
|
||||
getallthreads::natPlaceholder ()
|
||||
{
|
||||
ex_frames--;
|
||||
|
||||
if (ex_frames > 0)
|
||||
{
|
||||
if ((getallthreads::thread_num % 2) == 0)
|
||||
placeholder ();
|
||||
else
|
||||
natPlaceholder ();
|
||||
}
|
||||
else
|
||||
natRunner ();
|
||||
}
|
||||
|
||||
void
|
||||
getallthreads::natRunner ()
|
||||
{
|
||||
done = true;
|
||||
while (done)
|
||||
yield ();
|
||||
}
|
||||
|
||||
void
|
||||
getallthreads::do_getallthreads_tests ()
|
||||
{
|
||||
jvmtiEnv *env;
|
||||
JavaVM *vm = _Jv_GetJavaVM ();
|
||||
vm->GetEnv (reinterpret_cast<void **> (&env), JVMTI_VERSION_1_0);
|
||||
|
||||
jint num_threads;
|
||||
jthread *thread_arr;
|
||||
|
||||
jvmtiError jerr = env->GetAllThreads (&num_threads, &thread_arr);
|
||||
if (jerr != JVMTI_ERROR_NONE)
|
||||
{
|
||||
printf ("Test Failed, JVMTI Error!\n");
|
||||
return;
|
||||
}
|
||||
env->Deallocate (reinterpret_cast<unsigned char *> (thread_arr));
|
||||
|
||||
for (int i = 0; i < num_threads; i++)
|
||||
printf ("Found thread %d\n", i+1 );
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue