-/************
- * Resource *
- ************/
-CpuTi::CpuTi(CpuTiModelPtr model, const char *name, xbt_dynar_t powerPeak,
- int pstate, double powerScale, tmgr_trace_t powerTrace, int core,
- e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace,
- xbt_dict_t properties)
-: Resource(model, name, properties)
-, Cpu(core, 0, powerScale) {
- p_powerEvent = NULL;
- m_stateCurrent = stateInitial;
- m_powerScale = powerScale;
- m_core = core;
- tmgr_trace_t empty_trace;
- s_tmgr_event_t val;
- xbt_assert(core==1,"Multi-core not handled with this model yet");
- XBT_DEBUG("power scale %lf", powerScale);
- p_availTrace = new CpuTiTgmr(powerTrace, powerScale);
-
- CpuTiActionPtr action = NULL;
- p_actionSet = xbt_swag_new(xbt_swag_offset(*action, p_cpuListHookup));
-
- m_lastUpdate = 0;
-
- xbt_dynar_get_cpy(powerPeak, 0, &m_powerPeak);
- xbt_dynar_free(&powerPeak); /* kill memory leak */
- m_pstate = pstate;
- XBT_DEBUG("CPU create: peak=%f, pstate=%d", m_powerPeak, m_pstate);
-
- p_modifiedCpuHookup.prev = 0;
- p_modifiedCpuHookup.next = 0;
-
- if (stateTrace)
- p_stateEvent = tmgr_history_add_trace(history, stateTrace, 0.0, 0, static_cast<ResourcePtr>(this));
- if (powerTrace && xbt_dynar_length(powerTrace->s_list.event_list) > 1) {
- // add a fake trace event if periodicity == 0
- xbt_dynar_get_cpy(powerTrace->s_list.event_list,
- xbt_dynar_length(powerTrace->s_list.event_list) - 1, &val);
- if (val.delta == 0) {
- empty_trace = tmgr_empty_trace_new();
- p_powerEvent =
- tmgr_history_add_trace(history, empty_trace,
- p_availTrace->m_lastTime, 0, static_cast<ResourcePtr>(this));
+ /* add a fake trace event if periodicity == 0 */
+ if (profile && profile->event_list.size() > 1) {
+ kernel::profile::DatedValue val = profile->event_list.back();
+ if (val.date_ < 1e-12) {
+ auto* prof = new simgrid::kernel::profile::Profile();
+ speed_.event = prof->schedule(&profile::future_evt_set, this);