+
+ SIMIX_context_set_current(next_context);
+ swapcontext(&((smx_ctx_sysv_t) context)->uc, next_stack);
+#endif
+}
+
+static void smx_ctx_sysv_resume_parallel(smx_process_t first_process)
+{
+#ifdef CONTEXT_THREADS
+ unsigned long worker_id = __sync_fetch_and_add(&sysv_threads_working, 1);
+ xbt_os_thread_set_specific(sysv_worker_id_key, (void*) worker_id);
+ ucontext_t* worker_stack = &sysv_workers_stacks[worker_id];
+
+ smx_context_t context = first_process->context;
+ SIMIX_context_set_current(context);
+ swapcontext(worker_stack, &((smx_ctx_sysv_t) context)->uc);
+#endif
+}
+
+static void smx_ctx_sysv_runall_parallel(void)
+{
+#ifdef CONTEXT_THREADS
+ sysv_threads_working = 0;
+ xbt_parmap_apply(sysv_parmap, (void_f_pvoid_t) smx_ctx_sysv_resume_parallel,
+ simix_global->process_to_run);
+#endif