A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
yet another attempt to handle MPI special values in fortran
[simgrid.git]
/
src
/
smpi
/
mpi
/
smpi_op.cpp
diff --git
a/src/smpi/mpi/smpi_op.cpp
b/src/smpi/mpi/smpi_op.cpp
index
e81b93f
..
0da76e4
100644
(file)
--- 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) \
}
#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);
MPI_Op name = &mpi_##name;
CREATE_MPI_OP(MPI_MAX, max_func);
@@
-242,5
+242,17
@@
Op* Op::f2c(int id){
return static_cast<Op*>(F2C::f2c(id));
}
return static_cast<Op*>(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);
+ }
+}
+
}
}
}
}