1 /* Copyright (c) 2013-2018. The SimGrid Team. All rights reserved. */
3 /* This program is free software; you can redistribute it and/or modify it
4 * under the terms of the license (GNU LGPL) which comes with this package. */
6 #include "cpu_interface.hpp"
16 class XBT_PRIVATE CpuCas01Model;
17 class XBT_PRIVATE CpuCas01;
18 class XBT_PRIVATE CpuCas01Action;
24 class CpuCas01Model : public simgrid::surf::CpuModel {
26 explicit CpuCas01Model(kernel::resource::Model::UpdateAlgo algo);
27 ~CpuCas01Model() override;
29 Cpu* create_cpu(simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core) override;
36 class CpuCas01 : public Cpu {
38 CpuCas01(CpuCas01Model* model, simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core);
40 void apply_event(tmgr_trace_event_t event, double value) override;
41 CpuAction* execution_start(double size) override;
42 CpuAction* execution_start(double size, int requested_cores) override;
43 CpuAction* sleep(double duration) override;
45 bool is_used() override;
48 void on_speed_change() override;
54 class CpuCas01Action: public CpuAction {
55 friend CpuAction *CpuCas01::execution_start(double size);
56 friend CpuAction *CpuCas01::sleep(double duration);
58 CpuCas01Action(kernel::resource::Model* model, double cost, bool failed, double speed,
59 kernel::lmm::Constraint* constraint, int core_count);
60 CpuCas01Action(kernel::resource::Model* model, double cost, bool failed, double speed,
61 kernel::lmm::Constraint* constraint);
62 ~CpuCas01Action() override;
66 int requested_core_ = 1;