-/* Copyright (c) 2004-2015. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2004-2017. 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. */
#ifndef SURF_CPU_INTERFACE_HPP_
#define SURF_CPU_INTERFACE_HPP_
-#include "simgrid/s4u/host.hpp"
+#include "simgrid/s4u/Host.hpp"
#include "src/surf/maxmin_private.hpp"
+#include <list>
+
/***********
* Classes *
***********/
namespace simgrid {
namespace surf {
-class CpuModel;
-class Cpu;
-class CpuAction;
-
/** @ingroup SURF_cpu_interface
* @brief SURF cpu model interface class
* @details A model is an object which handle the interactions between its Resources and its Actions
*/
virtual simgrid::surf::Action *execution_start(double size)=0;
+ /**
+ * @brief Execute some quantity of computation on more than one core
+ *
+ * @param size The value of the processing amount (in flop) needed to process
+ * @param requestedCores The desired amount of cores. Must be >= 1
+ * @return The CpuAction corresponding to the processing
+ */
+ virtual simgrid::surf::Action* execution_start(double size, int requestedCores)
+ {
+ THROW_UNIMPLEMENTED;
+ return nullptr;
+ }
+
/**
* @brief Make a process sleep for duration (in seconds)
*
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 updateRemainingLazy(double now) override;
std::list<Cpu*> cpus();
+
+ void suspend() override;
+ void resume() override;
};
}