THREAD_LOCAL scheme_system_idle_channel

svn: r16156
This commit is contained in:
Kevin Tew 2009-09-28 22:08:25 +00:00
parent cdeb27255e
commit 1d95e97c29
3 changed files with 9 additions and 5 deletions

View File

@ -437,6 +437,7 @@ static Scheme_Env *place_instance_init_post_kernel() {
scheme_init_eval_places(); scheme_init_eval_places();
scheme_init_regexp_places(); scheme_init_regexp_places();
scheme_init_stx_places(); scheme_init_stx_places();
scheme_init_sema_places();
env = scheme_make_empty_env(); env = scheme_make_empty_env();
scheme_set_param(scheme_current_config(), MZCONFIG_ENV, (Scheme_Object *)env); scheme_set_param(scheme_current_config(), MZCONFIG_ENV, (Scheme_Object *)env);

View File

@ -231,6 +231,7 @@ void scheme_init_port_places(void);
void scheme_init_regexp_places(void); void scheme_init_regexp_places(void);
void scheme_init_stx_places(void); void scheme_init_stx_places(void);
void scheme_init_fun_places(void); void scheme_init_fun_places(void);
void scheme_init_sema_places(void);
void scheme_init_print_global_constants(void); void scheme_init_print_global_constants(void);
void register_network_evts(); void register_network_evts();
@ -333,7 +334,7 @@ extern Scheme_Object *scheme_stack_dump_key;
extern Scheme_Object *scheme_default_prompt_tag; extern Scheme_Object *scheme_default_prompt_tag;
extern Scheme_Object *scheme_system_idle_channel; extern THREAD_LOCAL Scheme_Object *scheme_system_idle_channel;
extern Scheme_Object *scheme_input_port_property, *scheme_output_port_property; extern Scheme_Object *scheme_input_port_property, *scheme_output_port_property;

View File

@ -24,7 +24,7 @@
#ifndef NO_SCHEME_THREADS #ifndef NO_SCHEME_THREADS
Scheme_Object *scheme_always_ready_evt; Scheme_Object *scheme_always_ready_evt;
Scheme_Object *scheme_system_idle_channel; THREAD_LOCAL Scheme_Object *scheme_system_idle_channel;
static Scheme_Object *make_sema(int n, Scheme_Object **p); static Scheme_Object *make_sema(int n, Scheme_Object **p);
static Scheme_Object *semap(int n, Scheme_Object **p); static Scheme_Object *semap(int n, Scheme_Object **p);
@ -196,9 +196,6 @@ void scheme_init_sema(Scheme_Env *env)
o->type = scheme_thread_recv_evt_type; o->type = scheme_thread_recv_evt_type;
thread_recv_evt = o; thread_recv_evt = o;
REGISTER_SO(scheme_system_idle_channel);
scheme_system_idle_channel = scheme_make_channel();
scheme_add_evt(scheme_sema_type, sema_ready, NULL, NULL, 0); scheme_add_evt(scheme_sema_type, sema_ready, NULL, NULL, 0);
scheme_add_evt_through_sema(scheme_semaphore_repost_type, sema_for_repost, NULL); scheme_add_evt_through_sema(scheme_semaphore_repost_type, sema_for_repost, NULL);
scheme_add_evt(scheme_channel_type, (Scheme_Ready_Fun)channel_get_ready, NULL, NULL, 1); scheme_add_evt(scheme_channel_type, (Scheme_Ready_Fun)channel_get_ready, NULL, NULL, 1);
@ -210,6 +207,11 @@ void scheme_init_sema(Scheme_Env *env)
scheme_add_evt(scheme_thread_recv_evt_type, (Scheme_Ready_Fun)thread_recv_ready, NULL, NULL, 0); scheme_add_evt(scheme_thread_recv_evt_type, (Scheme_Ready_Fun)thread_recv_ready, NULL, NULL, 0);
} }
void scheme_init_sema_places() {
REGISTER_SO(scheme_system_idle_channel);
scheme_system_idle_channel = scheme_make_channel();
}
Scheme_Object *scheme_make_sema(long v) Scheme_Object *scheme_make_sema(long v)
{ {
Scheme_Sema *sema; Scheme_Sema *sema;