From be30b8efb55c3240d1825982dd7fe921d6e1c472 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Tue, 4 Feb 2020 10:58:59 +0100 Subject: [PATCH] fixups in the C API - Fix the prototype of sg_actor_start to fix the constness of argv - Introduce sg_mailbox_put --- include/simgrid/actor.h | 2 +- include/simgrid/mailbox.h | 1 + src/s4u/s4u_Actor.cpp | 4 ++-- src/s4u/s4u_Mailbox.cpp | 19 ++++++++++++------- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/simgrid/actor.h b/include/simgrid/actor.h index eac34be51c..6f4a63cbbc 100644 --- a/include/simgrid/actor.h +++ b/include/simgrid/actor.h @@ -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); diff --git a/include/simgrid/mailbox.h b/include/simgrid/mailbox.h index d240f8006e..8bbf519937 100644 --- a/include/simgrid/mailbox.h +++ b/include/simgrid/mailbox.h @@ -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); diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 9069f5ecca..ca0df728fc 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -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(argv)); + function = simgrid::xbt::wrap_main(code, argc, argv); actor->start(std::move(function)); } diff --git a/src/s4u/s4u_Mailbox.cpp b/src/s4u/s4u_Mailbox.cpp index 1287202f06..d153c08080 100644 --- a/src/s4u/s4u_Mailbox.cpp +++ b/src/s4u/s4u_Mailbox.cpp @@ -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(); +} -- 2.20.1