X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/217ab9d5146bf370bbb20065fd357a5c099c78ee..d389c534faa9e89b5a9752fc122b20516b7659b0:/src/smpi/mpi/smpi_op.cpp diff --git a/src/smpi/mpi/smpi_op.cpp b/src/smpi/mpi/smpi_op.cpp index e81b93ff0a..0da76e479f 100644 --- a/src/smpi/mpi/smpi_op.cpp +++ b/src/smpi/mpi/smpi_op.cpp @@ -196,7 +196,7 @@ static void no_func(void*, void*, int*, MPI_Datatype*) } #define CREATE_MPI_OP(name, func) \ - static SMPI_Op mpi_##name (&(func) /* func */, true ); \ + static SMPI_Op mpi_##name (&(func) /* func */, true, true ); \ MPI_Op name = &mpi_##name; CREATE_MPI_OP(MPI_MAX, max_func); @@ -242,5 +242,17 @@ Op* Op::f2c(int id){ return static_cast(F2C::f2c(id)); } +void Op::ref(){ + refcount_++; +} + +void Op::unref(MPI_Op* op){ + if((*op)!=MPI_OP_NULL){ + (*op)->refcount_--; + if((*op)->refcount_==0 && (*op)->predefined_==false) + delete(*op); + } +} + } }