X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fe304706848f0a64477d4687b3ea97d5b9a0c35c..10ee8f063aa0963534a92ad74c2bf23a9afaa2ae:/src/s4u/s4u_Comm.cpp diff --git a/src/s4u/s4u_Comm.cpp b/src/s4u/s4u_Comm.cpp index 0c28a0bb58..9b9ac8bbf2 100644 --- a/src/s4u/s4u_Comm.cpp +++ b/src/s4u/s4u_Comm.cpp @@ -20,10 +20,11 @@ xbt::signal Comm::on_completion; Comm::~Comm() { - if (state_ == State::STARTED && not detached_ && (pimpl_ == nullptr || pimpl_->state_ == SIMIX_RUNNING)) { + if (state_ == State::STARTED && not detached_ && + (pimpl_ == nullptr || pimpl_->state_ == kernel::activity::State::RUNNING)) { XBT_INFO("Comm %p freed before its completion. Detached: %d, State: %d", this, detached_, (int)state_); if (pimpl_ != nullptr) - XBT_INFO("pimpl_->state: %d", pimpl_->state_); + XBT_INFO("pimpl_->state: %d", static_cast(pimpl_->state_)); else XBT_INFO("pimpl_ is null"); xbt_backtrace_display_current(); @@ -115,18 +116,18 @@ CommPtr Comm::set_tracing_category(const std::string& category) Comm* Comm::start() { - xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)", + xbt_assert(get_state() == State::INITED, "You cannot use %s() once your communication started (not implemented)", __FUNCTION__); if (src_buff_ != nullptr) { // Sender side on_sender_start(*Actor::self()); pimpl_ = simcall_comm_isend(sender_, mailbox_->get_impl(), remains_, rate_, src_buff_, src_buff_size_, match_fun_, - clean_fun_, copy_data_function_, user_data_, detached_); + clean_fun_, copy_data_function_, get_user_data(), detached_); } else if (dst_buff_ != nullptr) { // Receiver side xbt_assert(not detached_, "Receive cannot be detached"); on_receiver_start(*Actor::self()); pimpl_ = simcall_comm_irecv(receiver_, mailbox_->get_impl(), dst_buff_, &dst_buff_size_, match_fun_, - copy_data_function_, user_data_, rate_); + copy_data_function_, get_user_data(), rate_); } else { xbt_die("Cannot start a communication before specifying whether we are the sender or the receiver"); @@ -157,12 +158,12 @@ Comm* Comm::wait_for(double timeout) if (src_buff_ != nullptr) { on_sender_start(*Actor::self()); simcall_comm_send(sender_, mailbox_->get_impl(), remains_, rate_, src_buff_, src_buff_size_, match_fun_, - copy_data_function_, user_data_, timeout); + copy_data_function_, get_user_data(), timeout); } else { // Receiver on_receiver_start(*Actor::self()); simcall_comm_recv(receiver_, mailbox_->get_impl(), dst_buff_, &dst_buff_size_, match_fun_, copy_data_function_, - user_data_, timeout, rate_); + get_user_data(), timeout, rate_); } state_ = State::FINISHED; break; @@ -200,7 +201,7 @@ Comm* Comm::detach() Comm* Comm::cancel() { - simix::simcall([this] { + kernel::actor::simcall([this] { if (pimpl_) boost::static_pointer_cast(pimpl_)->cancel(); }); @@ -235,16 +236,5 @@ Actor* Comm::get_sender() return sender_ ? sender_->ciface() : nullptr; } -void intrusive_ptr_release(simgrid::s4u::Comm* c) -{ - if (c->refcount_.fetch_sub(1, std::memory_order_release) == 1) { - std::atomic_thread_fence(std::memory_order_acquire); - delete c; - } -} -void intrusive_ptr_add_ref(simgrid::s4u::Comm* c) -{ - c->refcount_.fetch_add(1, std::memory_order_relaxed); -} } // namespace s4u } // namespace simgrid