mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
// quick-threads.cc - interface between libjava and QuickThreads.
 | 
						|
 | 
						|
/* Copyright (C) 1998, 1999  Cygnus Solutions
 | 
						|
 | 
						|
   This file is part of libgcj.
 | 
						|
 | 
						|
This software is copyrighted work licensed under the terms of the
 | 
						|
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 | 
						|
details.  */
 | 
						|
 | 
						|
#include <config.h>
 | 
						|
 | 
						|
#include <cni.h>
 | 
						|
#include <jvm.h>
 | 
						|
 | 
						|
#include <java/lang/Thread.h>
 | 
						|
#include <java/lang/System.h>
 | 
						|
 | 
						|
 | 
						|
// Identifier for our piece of thread-local data.  Visible so that it
 | 
						|
// can be used in quick-threads.h.
 | 
						|
int _Jv_ThreadKey;
 | 
						|
 | 
						|
void
 | 
						|
_Jv_ThreadStart (java::lang::Thread *thread, _Jv_Thread_t *data,
 | 
						|
		 _Jv_ThreadStartFunc *meth)
 | 
						|
{
 | 
						|
  *data = coop_create ((coop_userf_t *) meth, (void *) thread,
 | 
						|
		       thread->isDaemon());
 | 
						|
  coop_setspecific (*data, _Jv_ThreadKey, thread);
 | 
						|
}
 | 
						|
 | 
						|
static void
 | 
						|
qthrow (void *except)
 | 
						|
{
 | 
						|
  _Jv_Throw ((java::lang::Throwable *) except);
 | 
						|
}
 | 
						|
 | 
						|
// Function to destroy thread-specific data item.  We just don't care.
 | 
						|
static void
 | 
						|
destroy_data (void *)
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
_Jv_InitThreads (void)
 | 
						|
{
 | 
						|
  coop_init ();
 | 
						|
  _Jv_ThreadKey = coop_key_create (destroy_data);
 | 
						|
  coop_set_throw_function (qthrow);
 | 
						|
}
 |