/******************************************************************************/
/******************************* Host simcalls ********************************/
-XBT_PUBLIC smx_activity_t simcall_execution_start(const char* name, double flops_amount, double priority, double bound,
+XBT_PUBLIC smx_activity_t simcall_execution_start(std::string name, double flops_amount, double priority, double bound,
sg_host_t host);
-XBT_PUBLIC smx_activity_t simcall_execution_parallel_start(const char* name, int host_nb, sg_host_t* host_list,
+XBT_PUBLIC smx_activity_t simcall_execution_parallel_start(std::string name, int host_nb, sg_host_t* host_list,
double* flops_amount, double* bytes_amount, double rate,
double timeout);
XBT_PUBLIC void simcall_execution_cancel(smx_activity_t execution);
class XBT_PUBLIC ActivityImpl {
public:
ActivityImpl();
+ explicit ActivityImpl(std::string name) : name_(name) {}
virtual ~ActivityImpl();
e_smx_state_t state_ = SIMIX_WAITING; /* State of the activity */
std::string name_; /* Activity name if any */
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_process);
-simgrid::kernel::activity::ExecImpl::ExecImpl(const char* name, resource::Action* surf_action,
+simgrid::kernel::activity::ExecImpl::ExecImpl(std::string name, resource::Action* surf_action,
resource::Action* timeout_detector, s4u::Host* host)
- : host_(host)
+ : ActivityImpl(name), host_(host), surf_action_(surf_action), timeout_detector_(timeout_detector)
{
- if (name)
- this->name_ = name;
this->state_ = SIMIX_RUNNING;
- surf_action_ = surf_action;
surf_action_->set_data(this);
- if (timeout_detector != nullptr) {
+ if (timeout_detector != nullptr)
timeout_detector->set_data(this);
- timeout_detector_ = timeout_detector;
- }
XBT_DEBUG("Create exec %p", this);
}
timeout_detector_ = nullptr;
}
- onCompletion(this);
+ on_completion(this);
/* If there are simcalls associated with the synchro, then answer them */
if (not simcalls_.empty())
SIMIX_execution_finish(this);
this->surf_action_ = new_action;
}
- onMigration(this, to);
+ on_migration(this, to);
return this;
}
/*************
* Callbacks *
*************/
-simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr)> simgrid::kernel::activity::ExecImpl::onCreation;
-simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr)> simgrid::kernel::activity::ExecImpl::onCompletion;
-simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr, simgrid::s4u::Host*)> simgrid::kernel::activity::ExecImpl::onMigration;
+simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr)> simgrid::kernel::activity::ExecImpl::on_creation;
+simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr)> simgrid::kernel::activity::ExecImpl::on_completion;
+simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr, simgrid::s4u::Host*)>
+ simgrid::kernel::activity::ExecImpl::on_migration;
~ExecImpl() override;
public:
- explicit ExecImpl(const char* name, resource::Action* surf_action, resource::Action* timeout_detector,
+ explicit ExecImpl(std::string name, resource::Action* surf_action, resource::Action* timeout_detector,
s4u::Host* host);
void suspend() override;
void resume() override;
resource::Action* timeout_detector_ = nullptr;
public:
- static simgrid::xbt::signal<void(kernel::activity::ExecImplPtr)> onCreation;
- static simgrid::xbt::signal<void(kernel::activity::ExecImplPtr)> onCompletion;
- static simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr, simgrid::s4u::Host*)> onMigration;
-
+ static simgrid::xbt::signal<void(kernel::activity::ExecImplPtr)> on_creation;
+ static simgrid::xbt::signal<void(kernel::activity::ExecImplPtr)> on_completion;
+ static simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr, simgrid::s4u::Host*)> on_migration;
};
}
}
if (simdata->host_nb > 0) {
simdata->compute =
boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(simcall_execution_parallel_start(
- task->name, simdata->host_nb, simdata->host_list, simdata->flops_parallel_amount,
+ task->name ?: "", simdata->host_nb, simdata->host_list, simdata->flops_parallel_amount,
simdata->bytes_parallel_amount, -1.0, timeout));
XBT_DEBUG("Parallel execution action created: %p", simdata->compute.get());
} else {
simdata->compute = boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(
- simcall_execution_start(task->name, simdata->flops_amount, simdata->priority, simdata->bound,
+ simcall_execution_start(task->name ?: "", simdata->flops_amount, simdata->priority, simdata->bound,
MSG_process_get_host(MSG_process_self())));
}
simcall_set_category(simdata->compute, task->category);
simgrid::vm::DirtyPageTrackingExt::EXTENSION_ID =
simgrid::vm::VirtualMachineImpl::extension_create<simgrid::vm::DirtyPageTrackingExt>();
simgrid::vm::VirtualMachineImpl::on_creation.connect(&on_virtual_machine_creation);
- simgrid::kernel::activity::ExecImpl::onCreation.connect(&on_exec_creation);
- simgrid::kernel::activity::ExecImpl::onCompletion.connect(&on_exec_completion);
+ simgrid::kernel::activity::ExecImpl::on_creation.connect(&on_exec_creation);
+ simgrid::kernel::activity::ExecImpl::on_completion.connect(&on_exec_completion);
}
}
void parallel_execute(int host_nb, s4u::Host** host_list, double* flops_amount, double* bytes_amount, double timeout)
{
smx_activity_t s =
- simcall_execution_parallel_start(nullptr, host_nb, host_list, flops_amount, bytes_amount, /* rate */ -1, timeout);
+ simcall_execution_parallel_start("", host_nb, host_list, flops_amount, bytes_amount, /* rate */ -1, timeout);
simcall_execution_wait(s);
}
/* 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. */
-#include "xbt/log.h"
#include "simgrid/s4u/Actor.hpp"
#include "simgrid/s4u/Exec.hpp"
#include "src/kernel/activity/ExecImpl.hpp"
+#include "xbt/log.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_exec, s4u_activity, "S4U asynchronous executions");
Activity* Exec::start()
{
- pimpl_ = simcall_execution_start(nullptr, flops_amount_, 1. / priority_, 0., host_);
+ pimpl_ = simcall_execution_start("", flops_amount_, 1. / priority_, 0., host_);
boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(pimpl_)->set_bound(bound_);
state_ = State::STARTED;
return this;
}
void Host::execute(double flops, double priority)
{
- smx_activity_t s = simcall_execution_start(nullptr, flops, 1 / priority /*priority*/, 0. /*bound*/, this);
+ smx_activity_t s = simcall_execution_start("", flops, 1 / priority /*priority*/, 0. /*bound*/, this);
simcall_execution_wait(s);
}
* \param host host where the synchro will be executed
* \return A new SIMIX execution synchronization
*/
-smx_activity_t simcall_execution_start(const char* name, double flops_amount, double priority, double bound,
+smx_activity_t simcall_execution_start(std::string name, double flops_amount, double priority, double bound,
simgrid::s4u::Host* host)
{
/* checking for infinite values */
* \param timeout timeout
* \return A new SIMIX execution synchronization
*/
-smx_activity_t simcall_execution_parallel_start(const char* name, int host_nb, sg_host_t* host_list,
+smx_activity_t simcall_execution_parallel_start(std::string name, int host_nb, sg_host_t* host_list,
double* flops_amount, double* bytes_amount, double rate, double timeout)
{
/* checking for infinite values */
}
boost::intrusive_ptr<simgrid::kernel::activity::ExecImpl>
-SIMIX_execution_start(const char* name, double flops_amount, double priority, double bound, sg_host_t host)
+SIMIX_execution_start(std::string name, double flops_amount, double priority, double bound, sg_host_t host)
{
/* set surf's action */
simgrid::kernel::resource::Action* surf_action = nullptr;
new simgrid::kernel::activity::ExecImpl(name, surf_action, /*timeout_detector*/ nullptr, host));
XBT_DEBUG("Create execute synchro %p: %s", exec.get(), exec->name_.c_str());
- simgrid::kernel::activity::ExecImpl::onCreation(exec);
+ simgrid::kernel::activity::ExecImpl::on_creation(exec);
return exec;
}
boost::intrusive_ptr<simgrid::kernel::activity::ExecImpl>
-SIMIX_execution_parallel_start(const char* name, int host_nb, sg_host_t* host_list, double* flops_amount,
+SIMIX_execution_parallel_start(std::string name, int host_nb, sg_host_t* host_list, double* flops_amount,
double* bytes_amount, double rate, double timeout)
{
XBT_PRIVATE void SIMIX_set_category(smx_activity_t synchro, const char* category);
XBT_PRIVATE boost::intrusive_ptr<simgrid::kernel::activity::ExecImpl>
-SIMIX_execution_start(const char* name, double flops_amount, double priority, double bound, sg_host_t host);
+SIMIX_execution_start(std::string name, double flops_amount, double priority, double bound, sg_host_t host);
XBT_PRIVATE boost::intrusive_ptr<simgrid::kernel::activity::ExecImpl>
-SIMIX_execution_parallel_start(const char* name, int host_nb, sg_host_t* host_list, double* flops_amount,
+SIMIX_execution_parallel_start(std::string name, int host_nb, sg_host_t* host_list, double* flops_amount,
double* bytes_amount, double rate, double timeout);
#endif