static void smx_ctx_ruby_stop(smx_context_t context);
static void smx_ctx_ruby_suspend(smx_context_t context);
static void smx_ctx_ruby_resume(smx_context_t new_context);
-static void smx_ctx_ruby_runall(xbt_swag_t processes);
+static void smx_ctx_ruby_runall(xbt_dynar_t processes);
void SIMIX_ctx_ruby_factory_init(smx_context_factory_t * factory)
{
if (code) {
context->process = (VALUE) code;
- DEBUG1("smx_ctx_ruby_create_context(%s)...Done", argv[0]);
+ XBT_DEBUG("smx_ctx_ruby_create_context(%s)...Done", argv[0]);
}
return (smx_context_t) context;
static void smx_ctx_ruby_stop(smx_context_t context)
{
- DEBUG0("smx_ctx_ruby_stop()");
+ XBT_DEBUG("smx_ctx_ruby_stop()");
VALUE process = Qnil;
smx_ctx_ruby_t ctx_ruby, current;
ctx_ruby = (smx_ctx_ruby_t) context;
- if (((smx_process_t)smx_current_context->data)->iwannadie) {
+ if (smx_current_context->iwannadie) {
if (ctx_ruby->process) {
//if the Ruby Process still Alive ,let's Schedule it
static void smx_ctx_ruby_suspend(smx_context_t context)
{
- DEBUG1("smx_ctx_ruby_suspend(%s)", context->argv[0]);
+ XBT_DEBUG("smx_ctx_ruby_suspend(%s)", context->argv[0]);
smx_ctx_ruby_t ctx_ruby = (smx_ctx_ruby_t) context;
if (ctx_ruby->process)
rb_process_unschedule(ctx_ruby->process);
static void smx_ctx_ruby_resume(smx_context_t new_context)
{
- DEBUG1("smx_ctx_ruby_resume(%s)",
+ XBT_DEBUG("smx_ctx_ruby_resume(%s)",
(new_context->argc ? new_context->argv[0] : "maestro"));
smx_ctx_ruby_t ctx_ruby = (smx_ctx_ruby_t) new_context;
rb_process_schedule(ctx_ruby->process);
}
-static void smx_ctx_ruby_runall(xbt_swag_t processes)
+static void smx_ctx_ruby_runall(xbt_dynar_t processes)
{
smx_process_t process;
smx_context_t old_context;
- while ((process = xbt_swag_extract(processes))) {
+ unsigned int cursor;
+
+ xbt_dynar_foreach(processes, cursor, process) {
old_context = smx_current_context;
smx_current_context = process->context;
smx_ctx_ruby_resume(smx_current_context);
smx_current_context = old_context;
- }
+ }
+ xbt_dynar_reset(processes);
}