mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-15 22:01:36 -08:00
ecl_wait_on() takes the environment as an argument
This commit is contained in:
parent
667362a485
commit
1de1d7e428
4 changed files with 8 additions and 8 deletions
|
|
@ -74,7 +74,7 @@ mp_condition_variable_wait(cl_object cv, cl_object lock)
|
|||
}
|
||||
env->own_process->process.waiting_for = cv;
|
||||
mp_giveup_lock(cv->condition_variable.lock = lock);
|
||||
ecl_wait_on(condition_variable_wait, cv);
|
||||
ecl_wait_on(env, condition_variable_wait, cv);
|
||||
@(return Ct)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ mp_get_lock_wait(cl_object lock)
|
|||
FEerror_not_a_lock(lock);
|
||||
}
|
||||
if (lock->lock.queue_list != Cnil || get_lock_inner(env, lock) == Cnil) {
|
||||
ecl_wait_on(get_lock_inner, lock);
|
||||
ecl_wait_on(env, get_lock_inner, lock);
|
||||
}
|
||||
@(return Ct)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,9 +123,9 @@ waiting_time(cl_index iteration, struct ecl_timeval *start)
|
|||
}
|
||||
|
||||
static void
|
||||
ecl_wait_on_timed(cl_object (*condition)(cl_env_ptr, cl_object), cl_object o)
|
||||
ecl_wait_on_timed(cl_env_ptr env, cl_object (*condition)(cl_env_ptr, cl_object), cl_object o)
|
||||
{
|
||||
volatile const cl_env_ptr the_env = ecl_process_env();
|
||||
volatile const cl_env_ptr the_env = env;
|
||||
volatile cl_object own_process = the_env->own_process;
|
||||
volatile cl_object record;
|
||||
cl_fixnum iteration = 0;
|
||||
|
|
@ -181,10 +181,10 @@ ecl_wait_on_timed(cl_object (*condition)(cl_env_ptr, cl_object), cl_object o)
|
|||
|
||||
|
||||
void
|
||||
ecl_wait_on(cl_object (*condition)(cl_env_ptr, cl_object), cl_object o)
|
||||
ecl_wait_on(cl_env_ptr env, cl_object (*condition)(cl_env_ptr, cl_object), cl_object o)
|
||||
{
|
||||
#if defined(HAVE_SIGPROCMASK)
|
||||
volatile const cl_env_ptr the_env = ecl_process_env();
|
||||
volatile const cl_env_ptr the_env = env;
|
||||
volatile cl_object own_process = the_env->own_process;
|
||||
volatile cl_object record;
|
||||
volatile sigset_t original;
|
||||
|
|
@ -253,7 +253,7 @@ ecl_wait_on(cl_object (*condition)(cl_env_ptr, cl_object), cl_object o)
|
|||
}
|
||||
} CL_UNWIND_PROTECT_END;
|
||||
#else
|
||||
ecl_wait_on_timed(condition, o);
|
||||
ecl_wait_on_timed(env, condition, o);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -471,7 +471,7 @@ extern void print_lock(char *s, cl_object lock, ...);
|
|||
extern void ecl_get_spinlock(cl_env_ptr env, cl_object *lock);
|
||||
extern void ecl_giveup_spinlock(cl_object *lock);
|
||||
|
||||
extern void ecl_wait_on(cl_object (*condition)(cl_env_ptr, cl_object), cl_object o);
|
||||
extern void ecl_wait_on(cl_env_ptr env, cl_object (*condition)(cl_env_ptr, cl_object), cl_object o);
|
||||
extern void ecl_wakeup_waiters(cl_env_ptr the_env, cl_object o, bool all);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue