-void SIMIX_process_on_exit(smx_process_t process) {
- int length = xbt_dynar_length(process->on_exit_fun);
- int cpt;
- int_f_pvoid_t fun;
- void *data;
- for (cpt = 0; cpt < length; cpt++) {
- fun = xbt_dynar_get_as(process->on_exit_fun,cpt,int_f_pvoid_t);
- data = xbt_dynar_get_as(process->on_exit_args,cpt,void*);
- (fun)(data);
+void SIMIX_process_on_exit_runall(smx_process_t process) {
+ s_smx_process_exit_fun_t exit_fun;
+
+ while (!xbt_dynar_is_empty(process->on_exit)) {
+ exit_fun = xbt_dynar_pop_as(process->on_exit,s_smx_process_exit_fun_t);
+ (exit_fun.fun)(exit_fun.arg);