Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fixups in the C API
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Tue, 4 Feb 2020 09:58:59 +0000 (10:58 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Tue, 4 Feb 2020 09:59:05 +0000 (10:59 +0100)
- Fix the prototype of sg_actor_start to fix the constness of argv
- Introduce sg_mailbox_put

include/simgrid/actor.h
include/simgrid/mailbox.h
src/s4u/s4u_Actor.cpp
src/s4u/s4u_Mailbox.cpp

index eac34be..6f4a63c 100644 (file)
@@ -24,7 +24,7 @@ XBT_PUBLIC sg_actor_t sg_actor_init(const char* name, sg_host_t host);
 /** Start the previously initialized actor.
  *
  * Note that argv is copied over, so you should free your own copy once the actor is started. */
-XBT_PUBLIC void sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, char** argv);
+XBT_PUBLIC void sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, const char* const* argv);
 XBT_PUBLIC aid_t sg_actor_get_PID(const_sg_actor_t actor);
 XBT_PUBLIC aid_t sg_actor_get_PPID(const_sg_actor_t actor);
 XBT_PUBLIC sg_actor_t sg_actor_by_PID(aid_t pid);
index d240f80..8bbf519 100644 (file)
@@ -17,6 +17,7 @@ XBT_PUBLIC const char* sg_mailbox_get_name(sg_mailbox_t mailbox);
 XBT_PUBLIC void sg_mailbox_set_receiver(const char* alias);
 XBT_PUBLIC int sg_mailbox_listen(const char* alias);
 
+XBT_PUBLIC void sg_mailbox_put(sg_mailbox_t mailbox, void* payload, long simulated_size_in_bytes);
 XBT_PUBLIC sg_comm_t sg_mailbox_put_async(sg_mailbox_t mailbox, void* payload, long simulated_size_in_bytes);
 XBT_PUBLIC void* sg_mailbox_get(sg_mailbox_t mailbox);
 
index 9069f5e..ca0df72 100644 (file)
@@ -462,11 +462,11 @@ sg_actor_t sg_actor_init(const char* name, sg_host_t host)
   return simgrid::s4u::Actor::init(name, host).get();
 }
 
-void sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, char** argv)
+void sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, const char* const* argv)
 {
   simgrid::simix::ActorCode function;
   if (code)
-    function = simgrid::xbt::wrap_main(code, argc, static_cast<const char* const*>(argv));
+    function = simgrid::xbt::wrap_main(code, argc, argv);
   actor->start(std::move(function));
 }
 
index 1287202..d153c08 100644 (file)
@@ -171,13 +171,6 @@ const char* sg_mailbox_get_name(sg_mailbox_t mailbox)
   return mailbox->get_cname();
 }
 
-sg_comm_t sg_mailbox_put_async(sg_mailbox_t mailbox, void* payload, long simulated_size_in_bytes)
-{
-  auto comm = mailbox->put_async(payload, simulated_size_in_bytes);
-  comm->add_ref();
-  return comm.get();
-}
-
 /** @brief Set the mailbox to receive in asynchronous mode
  *
  * All messages sent to this mailbox will be transferred to the receiver without waiting for the receive call.
@@ -206,3 +199,15 @@ void* sg_mailbox_get(sg_mailbox_t mailbox)
 {
   return mailbox->get();
 }
+
+void sg_mailbox_put(sg_mailbox_t mailbox, void* payload, long simulated_size_in_bytes)
+{
+  return 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)
+{
+  auto comm = mailbox->put_async(payload, simulated_size_in_bytes);
+  comm->add_ref();
+  return comm.get();
+}