X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/939476f1fc7630eb237535b07ed0deef77ce1b24..b8df87e176f27b25534f27d7e240defa32ca35bc:/src/kernel/activity/IoImpl.cpp diff --git a/src/kernel/activity/IoImpl.cpp b/src/kernel/activity/IoImpl.cpp index fd99cca2e7..f7121544ae 100644 --- a/src/kernel/activity/IoImpl.cpp +++ b/src/kernel/activity/IoImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2019. 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. */ @@ -7,6 +7,8 @@ #include "simgrid/kernel/resource/Action.hpp" #include "src/simix/smx_io_private.hpp" +XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_io); + simgrid::kernel::activity::IoImpl::IoImpl(std::string name, resource::Action* surf_action, s4u::Storage* storage) : ActivityImpl(name), storage_(storage), surf_action_(surf_action) { @@ -14,7 +16,14 @@ simgrid::kernel::activity::IoImpl::IoImpl(std::string name, resource::Action* su surf_action_->set_data(this); - XBT_DEBUG("Create exec %p", this); + XBT_DEBUG("Create io %p", this); +} + +simgrid::kernel::activity::IoImpl::~IoImpl() +{ + if (surf_action_ != nullptr) + surf_action_->unref(); + XBT_DEBUG("Destroy io %p", this); } void simgrid::kernel::activity::IoImpl::cancel() @@ -43,19 +52,7 @@ double simgrid::kernel::activity::IoImpl::get_remaining() void simgrid::kernel::activity::IoImpl::post() { - for (smx_simcall_t const& simcall : simcalls_) { - switch (simcall->call) { - case SIMCALL_STORAGE_WRITE: - simcall_storage_write__set__result(simcall, surf_action_->get_cost()); - break; - case SIMCALL_STORAGE_READ: - simcall_storage_read__set__result(simcall, surf_action_->get_cost()); - break; - default: - break; - } - } - + performed_ioops_ = surf_action_->get_cost(); switch (surf_action_->get_state()) { case simgrid::kernel::resource::Action::State::FAILED: state_ = SIMIX_FAILED; @@ -67,6 +64,12 @@ void simgrid::kernel::activity::IoImpl::post() THROW_IMPOSSIBLE; break; } + on_completion(this); SIMIX_io_finish(this); } +/************* + * Callbacks * + *************/ +simgrid::xbt::signal simgrid::kernel::activity::IoImpl::on_creation; +simgrid::xbt::signal simgrid::kernel::activity::IoImpl::on_completion;