+/* Copyright (c) 2013-2014. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
#include "cpu_interface.hpp"
XBT_LOG_EXTERNAL_CATEGORY(surf_kernel);
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 *
action->updateMaxDuration(delta);
- if ((action->getRemains() <= 0) &&
+ if ((action->getRemainsNoUpdate() <= 0) &&
(lmm_get_variable_weight(action->getVariable()) > 0)) {
action->finish();
action->setState(SURF_ACTION_DONE);
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 *
delta = now - m_lastUpdate;
if (m_remains > 0) {
- XBT_CDEBUG(surf_kernel, "Updating action(%p): remains was %lf, last_update was: %lf", this, m_remains, m_lastUpdate);
+ 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);
#ifdef HAVE_TRACING
TRACE_surf_host_set_utilization(cpu->getName(), getCategory(), m_lastValue, m_lastUpdate, now - m_lastUpdate);
}
#endif
- XBT_CDEBUG(surf_kernel, "Updating action(%p): remains is now %lf", this, m_remains);
+ XBT_CDEBUG(surf_kernel, "Updating action(%p): remains is now %f", this, m_remains);
}
m_lastUpdate = now;
m_lastValue = lmm_variable_getvalue(getVariable());
}
-void CpuAction::setBound(double bound)
-{
- XBT_IN("(%p,%g)", this, bound);
- m_bound = bound;
- lmm_update_variable_bound(getModel()->getMaxminSystem(), getVariable(), bound);
-
- if (getModel()->getUpdateMechanism() == UM_LAZY)
- heapRemove(getModel()->getActionHeap());
- XBT_OUT();
-}
-
/*
*
* This function formulates a constraint problem that pins a given task to
}
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);
}