aboutsummaryrefslogtreecommitdiffstats
path: root/src/thread.h
diff options
context:
space:
mode:
authorTom Tromey2012-08-19 03:23:03 -0600
committerTom Tromey2012-08-19 03:23:03 -0600
commit5651640d578fa2efa40be4789d9fa61813ccb1fa (patch)
treea59e33464016e88cb3f0501d6c47baf8aa5e07aa /src/thread.h
parentee1464eab19311ab7708b135bdb6eb989909e4cc (diff)
downloademacs-5651640d578fa2efa40be4789d9fa61813ccb1fa.tar.gz
emacs-5651640d578fa2efa40be4789d9fa61813ccb1fa.zip
condition variables
This implements condition variables for elisp. This needs more tests.
Diffstat (limited to 'src/thread.h')
-rw-r--r--src/thread.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/thread.h b/src/thread.h
index 6b66ea4d1c3..989acec6afb 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -215,11 +215,27 @@ struct Lisp_Mutex
215 lisp_mutex_t mutex; 215 lisp_mutex_t mutex;
216}; 216};
217 217
218/* A condition variable as a lisp object. */
219struct Lisp_CondVar
220{
221 struct vectorlike_header header;
222
223 /* The associated mutex. */
224 Lisp_Object mutex;
225
226 /* The name of the condition variable, or nil. */
227 Lisp_Object name;
228
229 /* The lower-level condition variable object. */
230 sys_cond_t cond;
231};
232
218extern struct thread_state *current_thread; 233extern struct thread_state *current_thread;
219 234
220extern void unmark_threads (void); 235extern void unmark_threads (void);
221extern void finalize_one_thread (struct thread_state *state); 236extern void finalize_one_thread (struct thread_state *state);
222extern void finalize_one_mutex (struct Lisp_Mutex *); 237extern void finalize_one_mutex (struct Lisp_Mutex *);
238extern void finalize_one_condvar (struct Lisp_CondVar *);
223 239
224extern void init_threads_once (void); 240extern void init_threads_once (void);
225extern void init_threads (void); 241extern void init_threads (void);