ecl_wait_on() takes the environment as an argument

This commit is contained in:
Juan Jose Garcia Ripoll 2012-03-31 11:25:56 +02:00
parent 667362a485
commit 1de1d7e428
4 changed files with 8 additions and 8 deletions

View file

@ -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)
}

View file

@ -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)
}

View file

@ -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
}

View file

@ -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