diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 1999-04-07 14:42:40 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-04-07 14:42:40 +0000 |
commit | ee9dd3721be68b9fa63dea9aa5a1d86e66958cde (patch) | |
tree | d96801a16fdf03a5682ef98730fe333a46eef944 /libjava/include/quick-threads.h | |
parent | 140fa895c6b859f827fc4437b91775a82cd105fb (diff) | |
download | gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.zip gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.tar.gz gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.tar.bz2 |
Initial revision
From-SVN: r26263
Diffstat (limited to 'libjava/include/quick-threads.h')
-rw-r--r-- | libjava/include/quick-threads.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/libjava/include/quick-threads.h b/libjava/include/quick-threads.h new file mode 100644 index 0000000..3ce8ece --- /dev/null +++ b/libjava/include/quick-threads.h @@ -0,0 +1,139 @@ +// -*- c++ -*- +// quick-threads.h - Defines for using 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. */ + +#ifndef __JV_QUICK_THREADS__ +#define __JV_QUICK_THREADS__ + +#include <coop.h> + +// +// Typedefs. +// + +typedef coop_c _Jv_ConditionVariable_t; +typedef coop_m _Jv_Mutex_t; +typedef coop_t *_Jv_Thread_t; +typedef void _Jv_ThreadStartFunc (java::lang::Thread *); + + +// +// Condition variables. +// + +inline void +_Jv_CondInit (_Jv_ConditionVariable_t *cv) +{ + coop_condition_variable_init (cv); +} + +inline int +_Jv_CondWait (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu, + jlong millis, jint nanos) +{ + return coop_condition_variable_wait (cv, mu, millis * 1000 + nanos / 1000); +} + +inline int +_Jv_CondNotify (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu) +{ + return coop_condition_variable_signal (cv, mu); +} + +inline int +_Jv_CondNotifyAll (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu) +{ + return coop_condition_variable_signal_all (cv, mu); +} + + +// +// Mutexes. +// + +inline void +_Jv_MutexInit (_Jv_Mutex_t *mu) +{ + coop_mutex_init (mu); +} + +inline int +_Jv_MutexLock (_Jv_Mutex_t *mu) +{ + coop_mutex_lock (mu); + return 0; +} + +inline int +_Jv_MutexUnlock (_Jv_Mutex_t *mu) +{ + return coop_mutex_unlock (mu); +} + + +// +// Thread creation and manipulation. +// + +void _Jv_InitThreads (void); + +inline void +_Jv_ThreadInitData (_Jv_Thread_t **data, java::lang::Thread *) +{ + *data = new _Jv_Thread_t; + **data = (coop_t *) 0; +} + +inline java::lang::Thread * +_Jv_ThreadCurrent (void) +{ + extern int _Jv_ThreadKey; + return (java::lang::Thread *) coop_getspecific (_Jv_ThreadKey); +} + +inline void +_Jv_ThreadYield (void) +{ + coop_yield (); +} + +inline void +_Jv_ThreadSetPriority (_Jv_Thread_t *, jint) +{ +} + +inline void +_Jv_ThreadCancel (_Jv_Thread_t *data, void *error) +{ + coop_terminate (*data, error); +} + +// Like Cancel, but doesn't run cleanups. +inline void +_Jv_ThreadDestroy (_Jv_Thread_t *data) +{ + coop_terminate (*data, 0); +} + +void _Jv_ThreadStart (java::lang::Thread *thread, _Jv_Thread_t *data, + _Jv_ThreadStartFunc *meth); + +inline void +_Jv_ThreadWait (void) +{ + coop_start (); +} + +inline void +_Jv_ThreadInterrupt (_Jv_Thread_t *) +{ +} + +#endif /* __JV_QUICK_THREADS__ */ |