namespace simgrid {
namespace simix {
-Mutex::Mutex() : mutex_(this)
+MutexImpl::MutexImpl() : mutex_(this)
{
XBT_IN("(%p)", this);
// Useful to initialize sleeping swag:
XBT_OUT();
}
-Mutex::~Mutex()
+MutexImpl::~MutexImpl()
{
XBT_IN("(%p)", this);
xbt_swag_free(this->sleeping);
XBT_OUT();
}
-void Mutex::lock(smx_actor_t issuer)
+void MutexImpl::lock(smx_actor_t issuer)
{
XBT_IN("(%p; %p)", this, issuer);
/* FIXME: check where to validate the arguments */
* \param issuer the process that tries to acquire the mutex
* \return whether we managed to lock the mutex
*/
-bool Mutex::try_lock(smx_actor_t issuer)
+bool MutexImpl::try_lock(smx_actor_t issuer)
{
XBT_IN("(%p, %p)", this, issuer);
if (this->locked) {
/** Unlock a mutex for a process
*
- * Unlocks the mutex and gives it to a process waiting for it.
+ * Unlocks the mutex and gives it to a process waiting for it.
* If the unlocker is not the owner of the mutex nothing happens.
* If there are no process waiting, it sets the mutex as free.
*/
-void Mutex::unlock(smx_actor_t issuer)
+void MutexImpl::unlock(smx_actor_t issuer)
{
XBT_IN("(%p, %p)", this, issuer);
- if(!this->locked)
+ if (not this->locked)
THROWF(mismatch_error, 0, "Cannot release that mutex: it was not locked.");
/* If the mutex is not owned by the issuer, that's not good */
smx_mutex_t simcall_HANDLER_mutex_init(smx_simcall_t simcall)
{
- return new simgrid::simix::Mutex();
+ return new simgrid::simix::MutexImpl();
}
// Simcall handlers:
synchro = SIMIX_synchro_wait(issuer->host, timeout);
synchro->simcalls.push_front(simcall);
issuer->waiting_synchro = synchro;
- xbt_swag_insert(simcall->issuer, cond->sleeping);
+ xbt_swag_insert(simcall->issuer, cond->sleeping);
XBT_OUT();
}
/**
* \brief Signalizes a condition.
*
- * Signalizes a condition and wakes up a sleeping process.
+ * Signalizes a condition and wakes up a sleeping process.
* If there are no process sleeping, no action is done.
* \param cond A condition
*/
XBT_DEBUG("Signal condition %p", cond);
- /* If there are processes waiting for the condition choose one and try
+ /* If there are processes waiting for the condition choose one and try
to make it acquire the mutex */
if ((proc = (smx_actor_t) xbt_swag_extract(cond->sleeping))) {
{
auto previous = (cond->refcount_)++;
xbt_assert(previous != 0);
- (void) previous;
}
void intrusive_ptr_release(s_smx_cond_t *cond)
}
/******************************** Semaphores **********************************/
-#define SMX_SEM_NOLIMIT 99999
/** @brief Initialize a semaphore */
smx_sem_t SIMIX_sem_init(unsigned int value)
{
delete proc->waiting_synchro;
proc->waiting_synchro = nullptr;
SIMIX_simcall_answer(&proc->simcall);
- } else if (sem->value < SMX_SEM_NOLIMIT) {
+ } else {
sem->value++;
}
XBT_OUT();
void simcall_HANDLER_sem_acquire_timeout(smx_simcall_t simcall, smx_sem_t sem, double timeout)
{
XBT_IN("(%p)",simcall);
- _SIMIX_sem_wait(sem, timeout, simcall->issuer, simcall);
+ _SIMIX_sem_wait(sem, timeout, simcall->issuer, simcall);
XBT_OUT();
}
int simcall_HANDLER_sem_would_block(smx_simcall_t simcall, smx_sem_t sem) {