diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
commit | 2c60951ba0efef23e2b765964b5dc0f1f49438a9 (patch) | |
tree | d96801a16fdf03a5682ef98730fe333a46eef944 /libjava/quick-threads.cc | |
parent | 1135eed2207f8f82c589e42ce113a1c2f0310778 (diff) | |
download | gcc-2c60951ba0efef23e2b765964b5dc0f1f49438a9.tar.gz |
Initial revision
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26263 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/quick-threads.cc')
-rw-r--r-- | libjava/quick-threads.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/libjava/quick-threads.cc b/libjava/quick-threads.cc new file mode 100644 index 00000000000..ed7ac5eac7b --- /dev/null +++ b/libjava/quick-threads.cc @@ -0,0 +1,51 @@ +// 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); +} |