* under the terms of the license (GNU LGPL) which comes with this package. */
#include "simgrid/modelchecker.h"
-#include "private.h"
#include "private.hpp"
#include "smpi_datatype_derived.hpp"
#include "smpi_op.hpp"
flags_ |= DT_FLAG_COMMITED;
}
-
bool Datatype::is_valid(){
return (flags_ & DT_FLAG_COMMITED);
}
+bool Datatype::is_basic()
+{
+ return (flags_ & DT_FLAG_BASIC);
+}
+
+bool Datatype::is_replayable()
+{
+ return ((this==MPI_BYTE)||(this==MPI_DOUBLE)||(this==MPI_INT)||
+ (this==MPI_CHAR)||(this==MPI_SHORT)||(this==MPI_LONG)||(this==MPI_FLOAT));
+}
+
size_t Datatype::size(){
return size_;
}
// FIXME Handle the case of a partial shared malloc.
if(smpi_privatize_global_variables == SMPI_PRIVATIZE_MMAP){
- smpi_switch_data_segment(smpi_process()->index());
+ smpi_switch_data_segment(simgrid::s4u::Actor::self()->getPid());
}
/* First check if we really have something to do */
if (recvcount > 0 && recvbuf != sendbuf) {
if (not smpi_process()->replaying())
memcpy(recvbuf, sendbuf, count);
} else if (not(sendtype->flags() & DT_FLAG_DERIVED)) {
- recvtype->unserialize( sendbuf, recvbuf, recvcount/recvtype->size(), MPI_REPLACE);
+ recvtype->unserialize(sendbuf, recvbuf, count / recvtype->size(), MPI_REPLACE);
} else if (not(recvtype->flags() & DT_FLAG_DERIVED)) {
- sendtype->serialize(sendbuf, recvbuf, sendcount/sendtype->size());
+ sendtype->serialize(sendbuf, recvbuf, count / sendtype->size());
}else{
void * buf_tmp = xbt_malloc(count);