#include <algorithm>
#include "private.h"
-#include "xbt/replay.h"
#include "mc/mc.h"
#include "src/mc/mc_replay.h"
#include "src/simix/smx_private.h"
// This part handles the problem of non-contiguous memory (for the unserialisation at the reception)
old_buf_ = old_buf;
size_ = datatype->size() * count;
- datatype->use();
+ datatype->ref();
comm_->ref();
action_ = nullptr;
detached_ = 0;
}
-void Request::unuse(MPI_Request* request)
+void Request::unref(MPI_Request* request)
{
if((*request) != MPI_REQUEST_NULL){
(*request)->refcount_--;
if((*request)->refcount_<0) xbt_die("wrong refcount");
if((*request)->refcount_==0){
- (*request)->old_type_->unuse();
+ Datatype::unref((*request)->old_type_);
Comm::unref((*request)->comm_);
(*request)->print_request("Destroying");
delete *request;
requests[1] = irecv_init(recvbuf, recvcount, recvtype, src, recvtag, comm);
startall(2, requests);
waitall(2, requests, stats);
- unuse(&requests[0]);
- unuse(&requests[1]);
+ unref(&requests[0]);
+ unref(&requests[1]);
if(status != MPI_STATUS_IGNORE) {
// Copy receive status
*status = stats[1];
if (xbt_cfg_get_boolean("smpi/grow-injected-times"))
nsleeps++;
}
- unuse(&request);
+ unref(&request);
}
simcall_process_sleep(sleeptime);
XBT_DEBUG("receiving size of %zu : sleep %f ", req->real_size_, sleeptime);
}
- unuse(&(req->detached_sender_));
+ unref(&(req->detached_sender_));
}
if(req->flags_ & PERSISTENT)
req->action_ = nullptr;
req->flags_ |= FINISHED;
- unuse(request);
+ unref(request);
}
char key[KEY_SIZE];
if(id==MPI_FORTRAN_REQUEST_NULL)
return static_cast<MPI_Request>(MPI_REQUEST_NULL);
- return static_cast<MPI_Request>(xbt_dict_get(Request::f2c_lookup_, get_key_id(key, id)));
+ return static_cast<MPI_Request>(xbt_dict_get(F2C::f2c_lookup_, get_key_id(key, id)));
}
int Request::add_f() {
- if(Request::f2c_lookup_==nullptr){
- Request::f2c_lookup_=xbt_dict_new_homogeneous(nullptr);
+ if(F2C::f2c_lookup_==nullptr){
+ F2C::f2c_lookup_=xbt_dict_new_homogeneous(nullptr);
}
char key[KEY_SIZE];
- xbt_dict_set(Request::f2c_lookup_, get_key_id(key, Request::f2c_id_), this, nullptr);
- Request::f2c_id_++;
- return Request::f2c_id_-1;
+ xbt_dict_set(F2C::f2c_lookup_, get_key_id(key, F2C::f2c_id_), this, nullptr);
+ F2C::f2c_id_++;
+ return F2C::f2c_id_-1;
}
void Request::free_f(int id) {
char key[KEY_SIZE];
if(id!=MPI_FORTRAN_REQUEST_NULL)
- xbt_dict_remove(Request::f2c_lookup_, get_key_id(key, id));
+ xbt_dict_remove(F2C::f2c_lookup_, get_key_id(key, id));
}