and call MSG_action_trace_run(NULL)
You can still have one merged file for each processes.
* Kill the MSG_paje_output() function. It's a noop since 2 years.
+ SIMIX:
+ * add a SIMIX_sem_get_capacity() function
-- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
XBT_PUBLIC(void) SIMIX_sem_acquire(smx_sem_t sem);
XBT_PUBLIC(void) SIMIX_sem_acquire_timeout(smx_sem_t sem, double max_duration);
XBT_PUBLIC(unsigned int) SIMIX_sem_acquire_any(xbt_dynar_t sems);
+XBT_PUBLIC(int) SIMIX_sem_get_capacity(smx_sem_t sem);
/************************** Action handling ************************************/
return (sem->capacity>0);
}
+/** @brief Returns the current capacity of the semaphore
+ *
+ * If it's negative, that's the amount of processes locked on the semaphore
+ */
+int SIMIX_sem_get_capacity(smx_sem_t sem){
+ return sem->capacity;
+}
+
/**
* \brief Waits on a semaphore
*
return;
}
+ sem->capacity--;
/* Always create an action null in case there is a host failure */
act_sleep = SIMIX_action_sleep(SIMIX_host_self(), -1);
SIMIX_action_set_name(act_sleep,bprintf("Locked in semaphore %p", sem));
SIMIX_unregister_action_to_semaphore(act_sleep, sem);
SIMIX_action_destroy(act_sleep);
DEBUG1("End of Wait on semaphore %p", sem);
+ sem->capacity++;
}
/**
* \brief Tries to acquire a semaphore before a timeout
}
if (max_duration >= 0) {
+ sem->capacity--;
act_sleep = SIMIX_action_sleep(SIMIX_host_self(), max_duration);
SIMIX_action_set_name(act_sleep,bprintf("Timed wait semaphore %p (max_duration:%f)", sem,max_duration));
SIMIX_register_action_to_semaphore(act_sleep, sem);
} else {
SIMIX_action_destroy(act_sleep);
}
+ sem->capacity++;
} else
SIMIX_sem_acquire(sem);