From 1918b044d13378ced09b15b8a78b6e1da036cd72 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 8 Jul 2018 11:24:24 +0200 Subject: [PATCH] C++ify some forgotten part of surf --- include/simgrid/kernel/resource/Model.hpp | 7 +++++++ src/include/surf/surf.hpp | 18 ------------------ src/kernel/resource/Model.cpp | 22 ++++++++++++++++++++++ src/simdag/sd_global.cpp | 8 ++++---- src/simix/smx_global.cpp | 4 ++-- src/surf/surf_c_bindings.cpp | 19 ------------------- teshsuite/surf/surf_usage2/surf_usage2.cpp | 8 ++++---- 7 files changed, 39 insertions(+), 47 deletions(-) diff --git a/include/simgrid/kernel/resource/Model.hpp b/include/simgrid/kernel/resource/Model.hpp index 59a0ccec1b..ce391afc37 100644 --- a/include/simgrid/kernel/resource/Model.hpp +++ b/include/simgrid/kernel/resource/Model.hpp @@ -71,6 +71,13 @@ public: virtual double next_occuring_event_lazy(double now); virtual double next_occuring_event_full(double now); +private: + Action* extract_action(Action::StateSet* list); + +public: + Action* extract_done_action(); + Action* extract_failed_action(); + /** * @brief Update action to the current time * diff --git a/src/include/surf/surf.hpp b/src/include/surf/surf.hpp index 3abcc8d7bf..7fb194ed7e 100644 --- a/src/include/surf/surf.hpp +++ b/src/include/surf/surf.hpp @@ -15,24 +15,6 @@ /** @{ @ingroup SURF_c_bindings */ -/** - * @brief Pop an action from the done actions set - * - * @param model The model from which the action is extracted - * @return An action in done state - */ -XBT_PUBLIC simgrid::kernel::resource::Action* -surf_model_extract_done_action_set(simgrid::kernel::resource::Model* model); - -/** - * @brief Pop an action from the failed actions set - * - * @param model The model from which the action is extracted - * @return An action in failed state - */ -XBT_PUBLIC simgrid::kernel::resource::Action* -surf_model_extract_failed_action_set(simgrid::kernel::resource::Model* model); - /** * @brief Get the size of the running action set of a model * diff --git a/src/kernel/resource/Model.cpp b/src/kernel/resource/Model.cpp index 65c0350da5..d7c664570b 100644 --- a/src/kernel/resource/Model.cpp +++ b/src/kernel/resource/Model.cpp @@ -141,6 +141,28 @@ void Model::update_actions_state(double now, double delta) xbt_die("Invalid cpu update mechanism!"); } +/** Pops and returns the first action of that state set (or nullptr if none exist) */ +Action* Model::extract_action(Action::StateSet* list) +{ + if (list->empty()) + return nullptr; + simgrid::kernel::resource::Action* res = &list->front(); + list->pop_front(); + return res; +} + +/** Pops and returns the first finished action (or nullptr if none exist) */ +Action* Model::extract_done_action() +{ + return extract_action(get_finished_action_set()); +} + +/** Pops and returns the failed finished action (or nullptr if none exist) */ +Action* Model::extract_failed_action() +{ + return extract_action(get_failed_action_set()); +} + void Model::update_actions_state_lazy(double /*now*/, double /*delta*/) { THROW_UNIMPLEMENTED; diff --git a/src/simdag/sd_global.cpp b/src/simdag/sd_global.cpp index 7a2b1a9348..193b5f444b 100644 --- a/src/simdag/sd_global.cpp +++ b/src/simdag/sd_global.cpp @@ -57,7 +57,7 @@ std::set* simulate(double how_long){ /* let's see which tasks are done */ for (auto const& model : *all_existing_models) { - simgrid::kernel::resource::Action* action = surf_model_extract_done_action_set(model); + simgrid::kernel::resource::Action* action = model->extract_done_action(); while (action != nullptr && action->get_data() != nullptr) { SD_task_t task = static_cast(action->get_data()); XBT_VERB("Task '%s' done", SD_task_get_name(task)); @@ -103,17 +103,17 @@ std::set* simulate(double how_long){ SD_task_run(output); } task->outputs->clear(); - action = surf_model_extract_done_action_set(model); + action = model->extract_done_action(); } /* let's see which tasks have just failed */ - action = surf_model_extract_failed_action_set(model); + action = model->extract_failed_action(); while (action != nullptr) { SD_task_t task = static_cast(action->get_data()); XBT_VERB("Task '%s' failed", SD_task_get_name(task)); SD_task_set_state(task, SD_FAILED); sd_global->return_set->insert(task); - action = surf_model_extract_failed_action_set(model); + action = model->extract_failed_action(); } } } diff --git a/src/simix/smx_global.cpp b/src/simix/smx_global.cpp index 6e7b575410..4a1b82ab8f 100644 --- a/src/simix/smx_global.cpp +++ b/src/simix/smx_global.cpp @@ -311,12 +311,12 @@ static void SIMIX_wake_processes() simgrid::kernel::resource::Action* action; XBT_DEBUG("Handling the processes whose action failed (if any)"); - while ((action = surf_model_extract_failed_action_set(model))) { + while ((action = model->extract_failed_action())) { XBT_DEBUG(" Handling Action %p",action); SIMIX_simcall_exit(static_cast(action->get_data())); } XBT_DEBUG("Handling the processes whose action terminated normally (if any)"); - while ((action = surf_model_extract_done_action_set(model))) { + while ((action = model->extract_done_action())) { XBT_DEBUG(" Handling Action %p",action); if (action->get_data() == nullptr) XBT_DEBUG("probably vcpu's action %p, skip", action); diff --git a/src/surf/surf_c_bindings.cpp b/src/surf/surf_c_bindings.cpp index 07e3030275..22f7a3ad83 100644 --- a/src/surf/surf_c_bindings.cpp +++ b/src/surf/surf_c_bindings.cpp @@ -152,25 +152,6 @@ double surf_solve(double max_date) /********* * MODEL * *********/ -static simgrid::kernel::resource::Action* ActionListExtract(simgrid::kernel::resource::Action::StateSet* list) -{ - if (list->empty()) - return nullptr; - simgrid::kernel::resource::Action* res = &list->front(); - list->pop_front(); - return res; -} - -simgrid::kernel::resource::Action* surf_model_extract_done_action_set(simgrid::kernel::resource::Model* model) -{ - return ActionListExtract(model->get_finished_action_set()); -} - -simgrid::kernel::resource::Action* surf_model_extract_failed_action_set(simgrid::kernel::resource::Model* model) -{ - return ActionListExtract(model->get_failed_action_set()); -} - int surf_model_running_action_set_size(simgrid::kernel::resource::Model* model) { return model->get_started_action_set()->size(); diff --git a/teshsuite/surf/surf_usage2/surf_usage2.cpp b/teshsuite/surf/surf_usage2/surf_usage2.cpp index 9ddc811823..c1ab1b96b1 100644 --- a/teshsuite/surf/surf_usage2/surf_usage2.cpp +++ b/teshsuite/surf/surf_usage2/surf_usage2.cpp @@ -51,20 +51,20 @@ int main(int argc, char **argv) running = 1; } - action = surf_model_extract_failed_action_set(model); + action = model->extract_failed_action(); while (action != nullptr) { XBT_INFO(" * Done Action"); XBT_DEBUG("\t * Failed Action: %p", action); action->unref(); - action = surf_model_extract_failed_action_set(model); + action = model->extract_failed_action(); } - action = surf_model_extract_done_action_set(model); + action = model->extract_done_action(); while (action != nullptr){ XBT_INFO(" * Done Action"); XBT_DEBUG("\t * Done Action: %p", action); action->unref(); - action = surf_model_extract_done_action_set(model); + action = model->extract_done_action(); } } } while (running && surf_solve(-1.0) >= 0.0); -- 2.20.1