int size= comm_->size() + FP_SIZE;
list_ = new char[size];
memset(list_, 0, size);
- shared_file_pointer_ = new MPI_Offset[1];
+ shared_file_pointer_ = new MPI_Offset();
shared_mutex_ = s4u::Mutex::create();
*shared_file_pointer_ = 0;
win_=new Win(list_, size, 1, MPI_INFO_NULL, comm_);
}
File::~File(){
+ if(comm_->rank() == 0){
+ delete shared_file_pointer_;
+ delete[] list_;
+ }
+ delete win_;
delete file_;
}
return simgrid::smpi::Colls::barrier(comm_);
}
-MPI_Info File::info(){
- if(info_== MPI_INFO_NULL)
- info_ = new Info();
- info_->ref();
- return info_;
-}
+ 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)
+ info->ref();
+ info_=info;
+ }
+ MPI_Comm File::comm(){
+ return comm_;
+ }
}
}