Cpu::onSpeedChange();
}
-void CpuCas01::apply_event(tmgr_trace_iterator_t event, double value)
+void CpuCas01::apply_event(tmgr_trace_event_t event, double value)
{
if (event == speed_.event) {
/* TODO (Hypervisor): do the same thing for constraint_core[i] */
public:
CpuCas01(CpuCas01Model *model, simgrid::s4u::Host *host, std::vector<double> *speedPerPstate, int core);
~CpuCas01() override;
- void apply_event(tmgr_trace_iterator_t event, double value) override;
+ void apply_event(tmgr_trace_event_t event, double value) override;
CpuAction *execution_start(double size) override;
CpuAction *sleep(double duration) override;
virtual void setStateTrace(tmgr_trace_t trace); /*< setup the trace file with states events (ON or OFF). Trace must contain boolean values (0 or 1). */
virtual void setSpeedTrace(tmgr_trace_t trace); /*< setup the trace file with availability events (peak speed changes due to external load). Trace must contain relative values (ratio between 0 and 1) */
- tmgr_trace_iterator_t stateEvent_ = nullptr;
+ tmgr_trace_event_t stateEvent_ = nullptr;
s_surf_metric_t speed_ = {1.0, 0, nullptr};
};
}
}
-void CpuTi::apply_event(tmgr_trace_iterator_t event, double value)
+void CpuTi::apply_event(tmgr_trace_event_t event, double value)
{
if (event == speed_.event) {
tmgr_trace_t speedTrace;
void setSpeedTrace(tmgr_trace_t trace) override;
- void apply_event(tmgr_trace_iterator_t event, double value) override;
+ void apply_event(tmgr_trace_event_t event, double value) override;
void updateActionsFinishTime(double now);
void updateRemainingAmount(double now);
simgrid::s4u::Link::onCreation(this->piface_);
}
-void NetworkCm02Link::apply_event(tmgr_trace_iterator_t triggered, double value)
+void NetworkCm02Link::apply_event(tmgr_trace_event_t triggered, double value)
{
/* Find out which of my iterators was triggered, and react accordingly */
if (triggered == bandwidth_.event) {
NetworkCm02Link(NetworkCm02Model* model, const char* name, double bandwidth, double latency,
e_surf_link_sharing_policy_t policy, lmm_system_t system);
virtual ~NetworkCm02Link() = default;
- void apply_event(tmgr_trace_iterator_t event, double value) override;
+ void apply_event(tmgr_trace_event_t event, double value) override;
void setBandwidth(double value) override;
void setLatency(double value) override;
virtual void gapAppend(double size, const LinkImpl* link, NetworkAction* action);
tmgr_trace_t trace); /*< setup the trace file with latency events (peak latency changes due to external load).
Trace must contain absolute values */
- tmgr_trace_iterator_t stateEvent_ = nullptr;
+ tmgr_trace_event_t stateEvent_ = nullptr;
s_surf_metric_t latency_ = {1.0, 0, nullptr};
s_surf_metric_t bandwidth_ = {1.0, 0, nullptr};
LinkNS3::~LinkNS3() = default;
-void LinkNS3::apply_event(tmgr_trace_iterator_t event, double value)
+void LinkNS3::apply_event(tmgr_trace_event_t event, double value)
{
THROW_UNIMPLEMENTED;
}
explicit LinkNS3(NetworkNS3Model* model, const char* name, double bandwidth, double latency);
~LinkNS3();
- void apply_event(tmgr_trace_iterator_t event, double value) override;
+ void apply_event(tmgr_trace_event_t event, double value) override;
void setBandwidth(double value) override { THROW_UNIMPLEMENTED; }
void setLatency(double value) override { THROW_UNIMPLEMENTED; }
void setBandwidthTrace(tmgr_trace_t trace) override;
return lmm_constraint_used(model()->getMaxminSystem(), constraint());
}
-void CpuL07::apply_event(tmgr_trace_iterator_t triggered, double value){
+void CpuL07::apply_event(tmgr_trace_event_t triggered, double value)
+{
XBT_DEBUG("Updating cpu %s (%p) with value %g", cname(), this, value);
if (triggered == speed_.event) {
speed_.scale = value;
}
}
-void LinkL07::apply_event(tmgr_trace_iterator_t triggered, double value) {
+void LinkL07::apply_event(tmgr_trace_event_t triggered, double value)
+{
XBT_DEBUG("Updating link %s (%p) with value=%f", cname(), this, value);
if (triggered == bandwidth_.event) {
setBandwidth(value);
CpuL07(CpuL07Model *model, simgrid::s4u::Host *host, std::vector<double> * speedPerPstate, int core);
~CpuL07() override;
bool isUsed() override;
- void apply_event(tmgr_trace_iterator_t event, double value) override;
+ void apply_event(tmgr_trace_event_t event, double value) override;
Action *execution_start(double size) override;
Action *sleep(double duration) override;
protected:
e_surf_link_sharing_policy_t policy);
~LinkL07() override;
bool isUsed() override;
- void apply_event(tmgr_trace_iterator_t event, double value) override;
+ void apply_event(tmgr_trace_event_t event, double value) override;
void setBandwidth(double value) override;
void setLatency(double value) override;
};
return false;
}
-void Storage::apply_event(tmgr_trace_iterator_t /*event*/, double /*value*/)
+void Storage::apply_event(tmgr_trace_event_t /*event*/, double /*value*/)
{
THROW_UNIMPLEMENTED;
}
/** @brief Check if the Storage is used (if an action currently uses its resources) */
bool isUsed() override;
- void apply_event(tmgr_trace_iterator_t event, double value) override;
+ void apply_event(tmgr_trace_event_t event, double value) override;
void turnOn() override;
void turnOff() override;
void surf_presolve()
{
double next_event_date = -1.0;
- tmgr_trace_iterator_t event = nullptr;
+ tmgr_trace_event_t event = nullptr;
double value = -1.0;
simgrid::surf::Resource *resource = nullptr;
double model_next_action_end = -1.0;
double value = -1.0;
simgrid::surf::Resource *resource = nullptr;
- tmgr_trace_iterator_t event = nullptr;
+ tmgr_trace_event_t event = nullptr;
if (max_date > 0.0) {
xbt_assert(max_date > NOW,"You asked to simulate up to %f, but that's in the past already", max_date);
typedef struct {
double peak; /**< The peak of the metric, ie its max value */
double scale; /**< Current availability of the metric according to the traces, in [0,1] */
- tmgr_trace_iterator_t event; /**< The associated trace event associated to the metric */
+ tmgr_trace_event_t event; /**< The associated trace event associated to the metric */
} s_surf_metric_t;
namespace simgrid {
* @param event What happened
* @param value [TODO]
*/
- virtual void apply_event(tmgr_trace_iterator_t event, double value)=0;
+ virtual void apply_event(tmgr_trace_event_t event, double value) = 0;
/** @brief Check if the current Resource is used (if it currently serves an action) */
virtual bool isUsed()=0;
}
/** @brief Registers a new trace into the future event set, and get an iterator over the integrated trace */
-tmgr_trace_iterator_t simgrid::trace_mgr::future_evt_set::add_trace(tmgr_trace_t trace, surf::Resource* resource)
+tmgr_trace_event_t simgrid::trace_mgr::future_evt_set::add_trace(tmgr_trace_t trace, surf::Resource* resource)
{
- tmgr_trace_iterator_t trace_iterator = nullptr;
+ tmgr_trace_event_t trace_iterator = nullptr;
trace_iterator = xbt_new0(s_tmgr_trace_event_t, 1);
trace_iterator->trace = trace;
}
/** @brief Retrieves the next occurring event, or nullptr if none happens before #date */
-tmgr_trace_iterator_t simgrid::trace_mgr::future_evt_set::pop_leq(double date, double* value,
- simgrid::surf::Resource** resource)
+tmgr_trace_event_t simgrid::trace_mgr::future_evt_set::pop_leq(double date, double* value,
+ simgrid::surf::Resource** resource)
{
double event_date = next_date();
if (event_date > date)
return nullptr;
- tmgr_trace_iterator_t trace_iterator = (tmgr_trace_iterator_t)xbt_heap_pop(p_heap);
+ tmgr_trace_event_t trace_iterator = (tmgr_trace_event_t)xbt_heap_pop(p_heap);
if (trace_iterator == nullptr)
return nullptr;
}
}
-void tmgr_trace_event_unref(tmgr_trace_iterator_t *trace_event)
+void tmgr_trace_event_unref(tmgr_trace_event_t* trace_event)
{
if ((*trace_event)->free_me) {
xbt_free(*trace_event);
} s_tmgr_event_t, *tmgr_event_t;
/* Iterator within a trace */
-typedef struct tmgr_trace_iterator {
+typedef struct tmgr_trace_event {
tmgr_trace_t trace;
unsigned int idx;
sg_resource_t resource;
int free_me;
} s_tmgr_trace_event_t;
-typedef struct tmgr_trace_iterator *tmgr_trace_iterator_t;
+typedef struct tmgr_trace_event* tmgr_trace_event_t;
/* Creation functions */
XBT_PUBLIC(tmgr_trace_t) tmgr_empty_trace_new(void);
* 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(void) tmgr_trace_event_unref(tmgr_trace_iterator_t *trace_event);
+XBT_PUBLIC(void) tmgr_trace_event_unref(tmgr_trace_event_t* trace_event);
XBT_PUBLIC(void) tmgr_finalize(void);
future_evt_set();
virtual ~future_evt_set();
double next_date() const;
- tmgr_trace_iterator_t pop_leq(double date, double *value, simgrid::surf::Resource** resource);
- tmgr_trace_iterator_t add_trace(tmgr_trace_t trace, simgrid::surf::Resource * resource);
+ tmgr_trace_event_t pop_leq(double date, double* value, simgrid::surf::Resource** resource);
+ tmgr_trace_event_t add_trace(tmgr_trace_t trace, simgrid::surf::Resource * resource);
private:
// TODO: use a boost type for the heap (or a ladder queue)
class MockedResource : public simgrid::surf::Resource {
public:
explicit MockedResource() : simgrid::surf::Resource(nullptr, "fake", nullptr) {}
- void apply_event(tmgr_trace_iterator_t event, double value)
+ void apply_event(tmgr_trace_event_t event, double value)
{
XBT_VERB("t=%.1f: Change value to %lg (idx: %d)", thedate, value, event->idx);
}
MockedResource daResource;
simgrid::trace_mgr::future_evt_set fes;
- tmgr_trace_iterator_t insertedIt = fes.add_trace(trace, &daResource);
+ tmgr_trace_event_t insertedIt = fes.add_trace(trace, &daResource);
while (fes.next_date() <= 20.0 && fes.next_date() >= 0) {
thedate = fes.next_date();
double value;
simgrid::surf::Resource* res;
- tmgr_trace_iterator_t it = fes.pop_leq(thedate, &value, &res);
+ tmgr_trace_event_t it = fes.pop_leq(thedate, &value, &res);
if (it == nullptr)
continue;