1 /* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved. */
3 /* This program is free software; you can redistribute it and/or modify it
4 * under the terms of the license (GNU LGPL) which comes with this package. */
6 #include "smpi_f2c.hpp"
8 #include "src/smpi/include/smpi_actor.hpp"
9 #include "src/instr/instr_smpi.hpp"
13 int mpi_status_ignore_;
14 int mpi_statuses_ignore_;
19 std::unique_ptr<F2C::f2c_lookup_type> F2C::f2c_lookup_ = nullptr;
21 F2C::f2c_lookup_type::size_type F2C::num_default_handles_ = 0;
23 // Keep it non trivially-constructible, or it will break MC+smpi on FreeBSD with Clang (don't ask why)
29 auto loc = smpi_process()->call_location();
30 if(loc && loc->linenumber != 0)
31 call_location_= std::string (loc->filename + ":" + std::to_string(loc->linenumber));
32 my_f2c_id_ = global_f2c_id();
33 (*f2c_lookup_)[my_f2c_id_] = this;
43 /* this function wasn't found, add it */
54 auto comm = f2c_lookup_->find(id);
55 return comm == f2c_lookup_->end() ? nullptr : comm->second;