summaryrefslogtreecommitdiff
path: root/libjava/quick-threads.cc
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>1999-04-07 14:42:40 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>1999-04-07 14:42:40 +0000
commit2c60951ba0efef23e2b765964b5dc0f1f49438a9 (patch)
treed96801a16fdf03a5682ef98730fe333a46eef944 /libjava/quick-threads.cc
parent1135eed2207f8f82c589e42ce113a1c2f0310778 (diff)
downloadgcc-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.cc51
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);
+}