// 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 #include #include #include #include // 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); }