surf_callback(void, CpuPtr) cpuCreatedCallbacks;
surf_callback(void, CpuPtr) cpuDestructedCallbacks;
-surf_callback(void, CpuPtr) cpuStateChangedCallbacks;
-surf_callback(void, CpuActionPtr) cpuActionStateChangedCallbacks;
+surf_callback(void, CpuPtr, e_surf_resource_state_t, e_surf_resource_state_t) cpuStateChangedCallbacks;
+surf_callback(void, CpuActionPtr, e_surf_action_state_t, e_surf_action_state_t) cpuActionStateChangedCallbacks;
/*********
* Model *
{
CpuActionPtr action;
while ((xbt_heap_size(getActionHeap()) > 0)
- && (double_equals(xbt_heap_maxkey(getActionHeap()), now))) {
+ && (double_equals(xbt_heap_maxkey(getActionHeap()), now, sg_surf_precision))) {
action = static_cast<CpuActionPtr>(static_cast<ActionPtr>(xbt_heap_pop(getActionHeap())));
XBT_CDEBUG(surf_kernel, "Something happened to action %p", action);
#ifdef HAVE_TRACING
void Cpu::setState(e_surf_resource_state_t state)
{
+ e_surf_resource_state_t old = Resource::getState();
Resource::setState(state);
- surf_callback_emit(cpuStateChangedCallbacks, this);
+ surf_callback_emit(cpuStateChangedCallbacks, this, old, state);
}
/**********
* Action *
if (m_remains > 0) {
XBT_CDEBUG(surf_kernel, "Updating action(%p): remains was %f, last_update was: %f", this, m_remains, m_lastUpdate);
- double_update(&(m_remains), m_lastValue * delta);
+ double_update(&(m_remains), m_lastValue * delta, sg_maxmin_precision*sg_surf_precision);
#ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
}
void CpuAction::setState(e_surf_action_state_t state){
+ e_surf_action_state_t old = getState();
Action::setState(state);
- surf_callback_emit(cpuActionStateChangedCallbacks, this);
+ surf_callback_emit(cpuActionStateChangedCallbacks, this, old, state);
}