m_speedScale = value;
onSpeedChange();
- if (tmgr_trace_event_free(event_type))
- p_speedEvent = nullptr;
+ tmgr_trace_event_unref(&p_speedEvent);
} else if (event_type == p_stateEvent) {
/* TODO (Hypervisor): do the same thing for constraint_core[i] */
xbt_assert(m_core == 1, "FIXME: add state change code also for constraint_core[i]");
}
}
}
- if (tmgr_trace_event_free(event_type))
- p_stateEvent = nullptr;
+ tmgr_trace_event_unref(&p_stateEvent);
} else {
xbt_die("Unknown event!\n");
}
p_availTrace = trace;
- if (tmgr_trace_event_free(event_type))
- p_speedEvent = NULL;
+ tmgr_trace_event_unref(&p_speedEvent);
} else if (event_type == p_stateEvent) {
if (value > 0) {
}
}
}
- if (tmgr_trace_event_free(event_type))
- p_stateEvent = NULL;
+ tmgr_trace_event_unref(&p_stateEvent);
} else {
- XBT_CRITICAL("Unknown event ! \n");
- xbt_abort();
+ xbt_die("Unknown event!\n");
}
-
- return;
}
void CpuTi::updateActionsFinishTime(double now)
return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint());
}
-void CpuL07::updateState(tmgr_trace_iterator_t event_type, double value, double /*date*/){
+void CpuL07::updateState(tmgr_trace_iterator_t triggered, double value, double /*date*/){
XBT_DEBUG("Updating cpu %s (%p) with value %g", getName(), this, value);
- if (event_type == p_speedEvent) {
- m_speedScale = value;
- onSpeedChange();
- if (tmgr_trace_event_free(event_type))
- p_speedEvent = NULL;
- } else if (event_type == p_stateEvent) {
+ if (triggered == p_speedEvent) {
+ m_speedScale = value;
+ onSpeedChange();
+ tmgr_trace_event_unref(&p_speedEvent);
+ } else if (triggered == p_stateEvent) {
if (value > 0)
turnOn();
else
turnOff();
- if (tmgr_trace_event_free(event_type))
- p_stateEvent = NULL;
+ tmgr_trace_event_unref(&p_stateEvent);
} else {
- XBT_CRITICAL("Unknown event ! \n");
- xbt_abort();
+ xbt_die("Unknown event!\n");
}
- return;
}
-void LinkL07::updateState(tmgr_trace_iterator_t event_type, double value, double date) {
+void LinkL07::updateState(tmgr_trace_iterator_t triggered, double value, double date) {
XBT_DEBUG("Updating link %s (%p) with value=%f for date=%g", getName(), this, value, date);
- if (event_type == p_bwEvent) {
+ if (triggered == p_bwEvent) {
updateBandwidth(value, date);
- if (tmgr_trace_event_free(event_type))
- p_bwEvent = NULL;
- } else if (event_type == p_latEvent) {
+ tmgr_trace_event_unref(&p_bwEvent);
+ } else if (triggered == p_latEvent) {
updateLatency(value, date);
- if (tmgr_trace_event_free(event_type))
- p_latEvent = NULL;
- } else if (event_type == p_stateEvent) {
+ tmgr_trace_event_unref(&p_latEvent);
+ } else if (triggered == p_stateEvent) {
if (value > 0)
turnOn();
else
turnOff();
- if (tmgr_trace_event_free(event_type))
- p_stateEvent = NULL;
+ tmgr_trace_event_unref(&p_stateEvent);
} else {
- XBT_CRITICAL("Unknown event ! \n");
- xbt_abort();
+ xbt_die("Unknown event ! \n");
}
- return;
}
double LinkL07::getBandwidth()
/* Find out which of my iterators was triggered, and react accordingly */
if (triggered == p_speed.event) {
updateBandwidth(value, date);
- if (tmgr_trace_event_free(triggered))
- p_speed.event = NULL;
+ tmgr_trace_event_unref(&p_speed.event);
} else if (triggered == p_latEvent) {
updateLatency(value, date);
- if (tmgr_trace_event_free(triggered))
- p_latEvent = NULL;
+ tmgr_trace_event_unref(&p_latEvent);
} else if (triggered == p_stateEvent) {
if (value > 0)
turnOn();
else {
- lmm_constraint_t cnst = getConstraint();
lmm_variable_t var = NULL;
lmm_element_t elem = NULL;
turnOff();
- while ((var = lmm_get_var_from_cnst(getModel()->getMaxminSystem(), cnst, &elem))) {
+ while ((var = lmm_get_var_from_cnst(getModel()->getMaxminSystem(), getConstraint(), &elem))) {
Action *action = static_cast<Action*>( lmm_variable_id(var) );
if (action->getState() == SURF_ACTION_RUNNING ||
}
}
}
- if (tmgr_trace_event_free(triggered))
- p_stateEvent = NULL;
+ tmgr_trace_event_unref(&p_stateEvent);
} else {
- XBT_CRITICAL("Unknown event ! \n");
- xbt_abort();
+ xbt_die("Unknown event!\n");
}
XBT_DEBUG
- ("There were a resource state event, need to update actions related to the constraint (%p)",
+ ("There was a resource state event, need to update actions related to the constraint (%p)",
getConstraint());
- return;
}
void NetworkCm02Link::updateBandwidth(double value, double date){
xbt_dict_free(&trace_list);
}
-int tmgr_trace_event_free(tmgr_trace_iterator_t trace_event)
+void tmgr_trace_event_unref(tmgr_trace_iterator_t *trace_event)
{
- if (trace_event->free_me) {
- xbt_free(trace_event);
- return 1;
+ if ((*trace_event)->free_me) {
+ xbt_free(*trace_event);
+ *trace_event = nullptr;
}
- return 0;
}
/**
* \brief Free a trace event structure
*
- * This function frees a trace_event if it can be freed, ie, if it has the free_me flag set to 1. This flag indicates whether the structure is still used somewhere or not.
- * \param trace_event Trace event structure
- * \return 1 if the structure was freed, 0 otherwise
+ * This function frees a trace_event if it can be freed, ie, if it has the free_me flag set to 1.
+ * This flag indicates whether the structure is still used somewhere or not.
+ * When the structure is freed, the argument is set to nullptr
*/
-XBT_PUBLIC(int) tmgr_trace_event_free(tmgr_trace_iterator_t trace_event);
+XBT_PUBLIC(void) tmgr_trace_event_unref(tmgr_trace_iterator_t *trace_event);
XBT_PUBLIC(void) tmgr_finalize(void);