Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add sg_comm_unref
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 16 Mar 2020 10:20:00 +0000 (11:20 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 16 Mar 2020 10:20:00 +0000 (11:20 +0100)
include/simgrid/comm.h
src/s4u/s4u_Comm.cpp
src/s4u/s4u_Mailbox.cpp

index d99cbbf..d9d6855 100644 (file)
@@ -19,6 +19,7 @@ XBT_PUBLIC sg_error_t sg_comm_wait_for(sg_comm_t comm, double timeout);
 XBT_PUBLIC void sg_comm_wait_all(sg_comm_t* comms, size_t count);
 XBT_PUBLIC int sg_comm_wait_any_for(sg_comm_t* comms, size_t count, double timeout);
 XBT_PUBLIC int sg_comm_wait_any(sg_comm_t* comms, size_t count);
+XBT_PUBLIC void sg_comm_unref(sg_comm_t comm);
 
 SG_END_DECL
 
index f348f68..b27c782 100644 (file)
@@ -257,9 +257,13 @@ Actor* Comm::get_sender() const
 /* **************************** Public C interface *************************** */
 void sg_comm_detach(sg_comm_t comm, void (*clean_function)(void*))
 {
-  comm = comm->detach(clean_function);
+  comm->detach(clean_function);
+  comm->unref();
+}
+void sg_comm_unref(sg_comm_t comm)
+{
+  comm->unref();
 }
-
 int sg_comm_test(sg_comm_t comm)
 {
   bool finished = comm->test();
index b879b2b..190dd9d 100644 (file)
@@ -210,7 +210,7 @@ sg_comm_t sg_mailbox_get_async(sg_mailbox_t mailbox, void** data)
 
 void sg_mailbox_put(sg_mailbox_t mailbox, void* payload, long simulated_size_in_bytes)
 {
-  return mailbox->put(payload, simulated_size_in_bytes);
+  mailbox->put(payload, simulated_size_in_bytes);
 }
 
 sg_comm_t sg_mailbox_put_async(sg_mailbox_t mailbox, void* payload, long simulated_size_in_bytes)