namespace smpi{
File::File(MPI_Comm comm, const char *filename, int amode, MPI_Info info): comm_(comm), flags_(amode), info_(info) {
+ if (info_ != MPI_INFO_NULL)
+ info_->ref();
std::string fullname=filename;
if (simgrid::s4u::Host::current()->get_disks().empty())
xbt_die("SMPI/IO : Trying to open file on a diskless host ! Add one to your platform file");
}
delete win_;
delete file_;
+ if (info_ != MPI_INFO_NULL)
+ simgrid::smpi::Info::unref(info_);
}
int File::close(MPI_File *fh){
return ret;
}
- int File::set_view(MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, const char *datarep, MPI_Info info){
+ int File::set_view(MPI_Offset /*disp*/, MPI_Datatype etype, MPI_Datatype filetype, const char* datarep, MPI_Info)
+ {
etype_=etype;
filetype_=filetype;
datarep_=std::string(datarep);
return MPI_SUCCESS;
}
- int File::get_view(MPI_Offset *disp, MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep){
+ int File::get_view(MPI_Offset* /*disp*/, MPI_Datatype* etype, MPI_Datatype* filetype, char* datarep)
+ {
*etype=etype_;
*filetype=filetype_;
snprintf(datarep, MPI_MAX_NAME_STRING+1, "%s", datarep_.c_str());
return simgrid::smpi::colls::barrier(comm_);
}
- MPI_Info File::info(){
- if(info_== MPI_INFO_NULL)
+ MPI_Info File::info()
+ {
+ if (info_ == MPI_INFO_NULL)
info_ = new Info();
info_->ref();
return info_;
}
- void File::set_info(MPI_Info info){
- if(info_!= MPI_INFO_NULL)
- info->ref();
- info_=info;
+ void File::set_info(MPI_Info info)
+ {
+ if (info_ != MPI_INFO_NULL)
+ simgrid::smpi::Info::unref(info_);
+ info_ = info;
+ if (info_ != MPI_INFO_NULL)
+ info_->ref();
}
MPI_Comm File::comm(){