X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4d9809aa64447811ca65a1242d4f9e07972c6472..HEAD:/src/smpi/include/smpi_actor.hpp diff --git a/src/smpi/include/smpi_actor.hpp b/src/smpi/include/smpi_actor.hpp index c493f3abb7..cb097d26c3 100644 --- a/src/smpi/include/smpi_actor.hpp +++ b/src/smpi/include/smpi_actor.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2023. 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. */ @@ -9,17 +9,16 @@ #include "private.hpp" #include "simgrid/s4u/Mailbox.hpp" #include "src/instr/instr_smpi.hpp" -#include "xbt/synchro.h" +#include "xbt/xbt_os_time.h" +#include -namespace simgrid { -namespace smpi { +namespace simgrid::smpi { class ActorExt { -private: double simulated_ = 0 /* Used to time with simulated_start/elapsed */; - simgrid::s4u::MailboxPtr mailbox_; - simgrid::s4u::MailboxPtr mailbox_small_; - xbt_mutex_t mailboxes_mutex_; + s4u::Mailbox* mailbox_; + s4u::Mailbox* mailbox_small_; + s4u::MutexPtr mailboxes_mutex_; xbt_os_timer_t timer_; MPI_Comm comm_self_ = MPI_COMM_NULL; MPI_Comm comm_intra_ = MPI_COMM_NULL; @@ -28,53 +27,73 @@ private: int sampling_ = 0; /* inside an SMPI_SAMPLE_ block? */ std::string instance_id_; bool replaying_ = false; /* is the process replaying a trace */ - simgrid::s4u::Barrier* finalization_barrier_; smpi_trace_call_location_t trace_call_loc_; - simgrid::s4u::ActorPtr actor_ = nullptr; + s4u::Actor* actor_ = nullptr; smpi_privatization_region_t privatized_region_ = nullptr; - int optind = 0; /*for getopt replacement */ +#ifdef __linux__ + int optind_ = 0; /*for getopt replacement */ +#else + int optind_ = 1; /*for getopt replacement */ +#endif + std::string tracing_category_ = ""; + MPI_Info info_env_; + void* bsend_buffer_ = nullptr; + int bsend_buffer_size_ = 0; + #if HAVE_PAPI /** Contains hardware data as read by PAPI **/ int papi_event_set_; papi_counter_t papi_counter_data_; #endif + public: - explicit ActorExt(simgrid::s4u::ActorPtr actor, simgrid::s4u::Barrier* barrier); + static simgrid::xbt::Extension EXTENSION_ID; + + explicit ActorExt(s4u::Actor* actor); + ActorExt(const ActorExt&) = delete; + ActorExt& operator=(const ActorExt&) = delete; ~ActorExt(); - void set_data(const char* instance_id); void finalize(); - int finalized(); - int initializing(); - int initialized(); + int finalized() const; + int initializing() const; + int initialized() const; + int finalizing() const; void mark_as_initialized(); + void mark_as_finalizing(); void set_replaying(bool value); - bool replaying(); + bool replaying() const; + std::string get_instance_id() const { return instance_id_;} + void set_tracing_category(std::string_view category) { tracing_category_ = category; } + const std::string& get_tracing_category() const { return tracing_category_; } smpi_trace_call_location_t* call_location(); void set_privatized_region(smpi_privatization_region_t region); - smpi_privatization_region_t privatized_region(); - smx_mailbox_t mailbox(); - smx_mailbox_t mailbox_small(); - xbt_mutex_t mailboxes_mutex(); + smpi_privatization_region_t privatized_region() const; + s4u::Mailbox* mailbox(); + s4u::Mailbox* mailbox_small(); + s4u::MutexPtr mailboxes_mutex() const; #if HAVE_PAPI - int papi_event_set(); + int papi_event_set() const; papi_counter_t& papi_counters(); #endif xbt_os_timer_t timer(); void simulated_start(); - double simulated_elapsed(); - MPI_Comm comm_world(); + double simulated_elapsed() const; + MPI_Comm comm_world() const; + bool comm_self_is_set() const { return (comm_self_ != MPI_COMM_NULL); }; MPI_Comm comm_self(); MPI_Comm comm_intra(); void set_comm_intra(MPI_Comm comm); void set_sampling(int s); - int sampling(); + int sampling() const; static void init(); - simgrid::s4u::ActorPtr get_actor(); - int get_optind(); + s4u::ActorPtr get_actor(); + int get_optind() const; void set_optind(int optind); + MPI_Info info_env(); + void bsend_buffer(void** buf, int* size); + int set_bsend_buffer(void* buf, int size); }; -} // namespace smpi -} // namespace simgrid +} // namespace simgrid::smpi #endif