1 |
|
2002-10-27 Marius Vollmer <mvo@zagadka.ping.de> |
2 |
|
|
3 |
|
* scmsigs.c (signal_cell_handlers, install_handler_data, |
4 |
|
scm_delq_spine_x, really_install_handler, install_handler): New |
5 |
|
scheme for triggering signal handlers, to simplify take_signal. |
6 |
|
(take_signal): Simplified, to avoid race conditions. |
7 |
|
(scm_sigaction_for_thread): Use new Scheme. Validate that thread |
8 |
|
hasn't exited yet. |
9 |
|
|
10 |
|
* async.c (scm_async_click): Reset pending_asyncs, handle |
11 |
|
signal_asyncs. Don't set cdr of a non-signal async to #f. |
12 |
|
(scm_i_queue_async_cell): Do not check cdr of cell for #f, queue |
13 |
|
always. Set pending_asyncs. |
14 |
|
(scm_system_async_mark_for_thread): Check that thread has not |
15 |
|
exited. |
16 |
|
(scm_unmask_signals, decrease_block): Call scm_async_click after |
17 |
|
block_asyncs becomes zero. |
18 |
|
|
19 |
|
* __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of |
20 |
|
active_asyncs. |
21 |
|
|
22 |
|
* root.h (scm_root_state): Added pending_asyncs and signal_asyncs |
23 |
|
fields. |
24 |
|
* root.c (root_mark): Mark them. |
25 |
|
(make_root): Initialize them. |
26 |
|
|
27 |
|
* iselect.c, iselect.h: Replaced GUILE_ISELECT with |
28 |
|
USE_COOP_THREADS. |
29 |
|
(scm_internal_select): Define one version for USE_COOP_THREADS and |
30 |
|
one for USE_NULL_THREADS. |
31 |
|
(scm_init_iselect): Likewise. |
32 |
|
|
33 |
|
* inline.h (scm_cell, scm_double_cell): Also allow |
34 |
|
USE_COPT_THREADS to not protect the slot initializers. |
35 |
|
|
36 |
|
* init.c (scm_init_guile_1): Call scm_init_thread_procs. This is |
37 |
|
because threads need to be initialized before the stack, but |
38 |
|
gsubrs such as scm_timed_condition_variable_wait can only be |
39 |
|
created later. |
40 |
|
|
41 |
|
* threads.h: Include "coop-pthreads.h" when requested. |
42 |
|
(scm_threads_make_mutex, scm_threads_lock_mutex, |
43 |
|
scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were |
44 |
|
not implemented anyway. |
45 |
|
(scm_init_thread_procs, scm_try_mutex, |
46 |
|
scm_timed_condition_variable_wait, |
47 |
|
scm_broadcast_condition_variable, scm_c_thread_exited_p, |
48 |
|
scm_thread_exited_p): New prototypes. |
49 |
|
(struct timespec): Define if not already defined. |
50 |
|
(scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock, |
51 |
|
scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init, |
52 |
|
scm_cond_wait, scm_cond_timedwait, scm_cond_signal, |
53 |
|
scm_cond_broadcast, scm_cond_destroy): Declarations moved here and |
54 |
|
deprecated. |
55 |
|
|
56 |
|
* threads.c: Include <errno.h>. Include "coop-pthreads.c" when |
57 |
|
requested. |
58 |
|
(scm_thread_exited_p): New. |
59 |
|
(scm_try_mutex, scm_broadcast_condition_variable): Newly |
60 |
|
registered procedures. |
61 |
|
(scm_wait_condition_variable, scm_timed_wait_condition_variable): |
62 |
|
Use the latter as the procedure for "wait-condition-variable", |
63 |
|
thus offering a optional timeout parameter to Scheme. |
64 |
|
(scm_wait_condition_variable): Implement in terms of |
65 |
|
scm_timed_wait_condition_variable. |
66 |
|
(scm_mutex_init, scm_mutex_lock, scm_mutex_trylock, |
67 |
|
scm_mutex_unlock, scm_mutex_destroy, scm_cond_init, |
68 |
|
scm_cond_wait, scm_cond_timedwait, scm_cond_signal, |
69 |
|
scm_cond_broadcast, scm_cond_destroy): Implement in terms of |
70 |
|
scm_make_mutex, etc, and deprecate. |
71 |
|
(scm_init_threads): Do not create smobs, leave this to |
72 |
|
scm_threads_init. Do not include "threads.x" file. |
73 |
|
(scm_init_thread_procs): New, include "threads.x" here. |
74 |
|
|
75 |
|
* null-threads.h (scm_null_mutex, scm_null_mutex_init, |
76 |
|
scm_null_mutex_lock, scm_null_mutex_unlock, |
77 |
|
scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init, |
78 |
|
scm_null_condvar_wait, scm_null_condvar_signal, |
79 |
|
scm_null_condvar_destroy): Removed. |
80 |
|
(scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init, |
81 |
|
scm_cond_wait, scm_cond_signal, scm_cond_broadcast, |
82 |
|
scm_cond_destory): Do not define, they are now deprecated and |
83 |
|
handled by threads.{h,c}. |
84 |
|
|
85 |
|
* null-threads.c (scm_null_mutex, scm_null_cond): Define here. |
86 |
|
(scm_threads_init): Create smobs here, using the appropriate |
87 |
|
sizes. |
88 |
|
(block): Removed, now unused. |
89 |
|
(scm_c_thread_exited_p): New. |
90 |
|
(scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock, |
91 |
|
scm_null_mutex_destroy, scm_null_condvar_init, |
92 |
|
scm_null_condvar_wait, scm_null_condvar_signal, |
93 |
|
scm_null_condvar_destroy): Removed and updated users to do their |
94 |
|
task directly. |
95 |
|
(scm_try_mutex, timeval_subtract, |
96 |
|
scm_timed_wait_condition_variable, |
97 |
|
scm_broadcast_condition_variable): New. |
98 |
|
(scm_wait_condition_variable): Removed. |
99 |
|
|
100 |
|
* coop-defs.h (coop_m): Added 'level' field. |
101 |
|
(scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock, |
102 |
|
scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init, |
103 |
|
scm_cond_wait, scm_cond_timedwait, scm_cond_signal, |
104 |
|
scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not |
105 |
|
define. |
106 |
|
(coop_condition_variable_broadcast): New. |
107 |
|
|
108 |
|
* coop-threads.c (scm_threads_init): Create smobs here, using the |
109 |
|
appropriate sizes. |
110 |
|
(scm_c_thread_exited_p, scm_try_mutex, |
111 |
|
scm_timed_wait_condition_variable, |
112 |
|
scm_broadcast_condition_variable): New. |
113 |
|
(scm_wait_condition_variable): Removed. |
114 |
|
|
115 |
|
* coop.c (coop_new_mutex_init): Initialize level. |
116 |
|
(coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain |
117 |
|
level. |
118 |
|
(coop_condition_variable_signal): Renamed to |
119 |
|
coop_condition_variable_broadcast and reimplemented in terms of |
120 |
|
that. Thus... |
121 |
|
(coop_condition_variable_broadcast): New. |
122 |
|
|
123 |
|
* goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc. |
124 |
|
|
125 |
|
* coop-pthreads.h, coop-pthreads.c: New, but unfinished. |
126 |
|
|
127 |
2002-10-21 Marius Vollmer <mvo@zagadka.ping.de> |
2002-10-21 Marius Vollmer <mvo@zagadka.ping.de> |
128 |
|
|
129 |
* null-threads.c: Include <time.h>. Also, use <...> for inclusion |
* null-threads.c: Include <time.h>. Also, use <...> for inclusion |
131 |
|
|
132 |
* async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG): |
* async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG): |
133 |
New. Use it instead of SCM_MAKE_VALIDATE in lots of places to |
New. Use it instead of SCM_MAKE_VALIDATE in lots of places to |
134 |
gove better error messages. Thanks to Bill Schottstaedt! |
give better error messages. Thanks to Bill Schottstaedt! |
135 |
|
|
136 |
2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de> |
2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de> |
137 |
|
|