#include "simgrid/s4u/Host.hpp"
#include "smpi_comm.hpp"
#include "smpi_datatype_derived.hpp"
-#include "smpi_process.hpp"
#include "smpi_status.hpp"
#include "src/simix/ActorImpl.hpp"
+#include "src/smpi/include/smpi_actor.hpp"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_pmpi, smpi, "Logging specific to SMPI (pmpi)");
int already_init;
MPI_Initialized(&already_init);
if(already_init == 0){
- simgrid::smpi::Process::init(argc, argv);
+ simgrid::smpi::ActorExt::init(argc, argv);
smpi_process()->mark_as_initialized();
int rank = simgrid::s4u::this_actor::get_pid();
TRACE_smpi_init(rank);
}
int PMPI_Error_string(int errorcode, char* string, int* resultlen){
- static const char *smpi_error_string[] = {
- FOREACH_ERROR(GENERATE_STRING)
- };
- *resultlen = strlen(smpi_error_string[errorcode]);
- strncpy(string, smpi_error_string[errorcode], *resultlen);
- return MPI_SUCCESS;
+ if (errorcode<0 || string ==nullptr){
+ return MPI_ERR_ARG;
+ } else {
+ static const char *smpi_error_string[] = {
+ FOREACH_ERROR(GENERATE_STRING)
+ };
+ *resultlen = strlen(smpi_error_string[errorcode]);
+ strncpy(string, smpi_error_string[errorcode], *resultlen);
+ return MPI_SUCCESS;
+ }
}
int PMPI_Keyval_create(MPI_Copy_function* copy_fn, MPI_Delete_function* delete_fn, int* keyval, void* extra_state) {