A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
allow an Exec to be unscheduled (reset host list, flops and bytes vector, and start...
[simgrid.git]
/
include
/
simgrid
/
s4u
/
Exec.hpp
diff --git
a/include/simgrid/s4u/Exec.hpp
b/include/simgrid/s4u/Exec.hpp
index 3fe8ccb96a915757d650149dfe8eb229d2f85ca3..57fe743cd4309603a0bbcc6df41a279aaeb50a07 100644
(file)
--- a/
include/simgrid/s4u/Exec.hpp
+++ b/
include/simgrid/s4u/Exec.hpp
@@
-30,20
+30,27
@@
namespace s4u {
* @endrst
*/
class XBT_PUBLIC Exec : public Activity_T<Exec> {
* @endrst
*/
class XBT_PUBLIC Exec : public Activity_T<Exec> {
+#ifndef DOXYGEN
friend kernel::activity::ExecImpl;
friend kernel::activity::ExecImpl;
+ friend kernel::EngineImpl; // Auto-completes the execs of maestro (in simDAG)
+#endif
+
bool parallel_ = false;
protected:
explicit Exec(kernel::activity::ExecImplPtr pimpl);
void complete(Activity::State state) override;
bool parallel_ = false;
protected:
explicit Exec(kernel::activity::ExecImplPtr pimpl);
void complete(Activity::State state) override;
+ void reset();
public:
#ifndef DOXYGEN
Exec(Exec const&) = delete;
Exec& operator=(Exec const&) = delete;
#endif
public:
#ifndef DOXYGEN
Exec(Exec const&) = delete;
Exec& operator=(Exec const&) = delete;
#endif
+ /*! Signal fired each time that an execution actually starts (no veto) */
static xbt::signal<void(Exec const&)> on_start;
static xbt::signal<void(Exec const&)> on_start;
+ /*! Signal fired each time that an execution terminates (either normally, cancelled or failed) */
static xbt::signal<void(Exec const&)> on_completion;
static ExecPtr init();
static xbt::signal<void(Exec const&)> on_completion;
static ExecPtr init();
@@
-51,14
+58,16
@@
public:
/*! take a vector of s4u::ExecPtr and return when one of them is finished.
* The return value is the rank of the first finished ExecPtr. */
/*! take a vector of s4u::ExecPtr and return when one of them is finished.
* The return value is the rank of the first finished ExecPtr. */
- static
in
t wait_any(const std::vector<ExecPtr>& execs) { return wait_any_for(execs, -1); }
+ static
ssize_
t wait_any(const std::vector<ExecPtr>& execs) { return wait_any_for(execs, -1); }
/*! Same as wait_any, but with a timeout. If the timeout occurs, parameter last is returned.*/
/*! Same as wait_any, but with a timeout. If the timeout occurs, parameter last is returned.*/
- static
in
t wait_any_for(const std::vector<ExecPtr>& execs, double timeout);
+ static
ssize_
t wait_any_for(const std::vector<ExecPtr>& execs, double timeout);
+#ifndef DOXYGEN
XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for parameter")
XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for parameter")
- static int wait_any(std::vector<ExecPtr>* execs) { return
wait_any_for(*execs, -1
); }
+ static int wait_any(std::vector<ExecPtr>* execs) { return
static_cast<int>(wait_any_for(*execs, -1)
); }
XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for first parameter")
XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for first parameter")
- static int wait_any_for(std::vector<ExecPtr>* execs, double timeout) { return wait_any_for(*execs, timeout); }
+ static int wait_any_for(std::vector<ExecPtr>* execs, double timeout) { return static_cast<int>(wait_any_for(*execs, timeout)); }
+#endif
/** @brief On sequential executions, returns the amount of flops that remain to be done; This cannot be used on
* parallel executions. */
/** @brief On sequential executions, returns the amount of flops that remain to be done; This cannot be used on
* parallel executions. */
@@
-66,6
+75,7
@@
public:
double get_remaining_ratio() const;
ExecPtr set_host(Host* host);
ExecPtr set_hosts(const std::vector<Host*>& hosts);
double get_remaining_ratio() const;
ExecPtr set_host(Host* host);
ExecPtr set_hosts(const std::vector<Host*>& hosts);
+ ExecPtr unset_host();
ExecPtr set_flops_amount(double flops_amount);
ExecPtr set_flops_amounts(const std::vector<double>& flops_amounts);
ExecPtr set_flops_amount(double flops_amount);
ExecPtr set_flops_amounts(const std::vector<double>& flops_amounts);
@@
-73,7
+83,7
@@
public:
ExecPtr set_bound(double bound);
ExecPtr set_priority(double priority);
ExecPtr set_bound(double bound);
ExecPtr set_priority(double priority);
-
XBT_ATTRIB_DEPRECATED_v329("Please use exec_init(...)->wait_for(timeout)") ExecPtr set_timeout(double timeout
);
+
ExecPtr update_priority(double priority
);
Host* get_host() const;
unsigned int get_host_number() const;
Host* get_host() const;
unsigned int get_host_number() const;