From 0322a73bb9bb8b3285c6d7fce7e19a40e5025823 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Thu, 6 Jul 2017 11:24:17 +0200 Subject: [PATCH] s4u: use size_t for payload size instead of int and double --- include/simgrid/s4u/Activity.hpp | 6 +++--- include/simgrid/s4u/Mailbox.hpp | 15 +++++++++------ include/simgrid/simix.h | 4 ++-- src/s4u/s4u_activity.cpp | 3 ++- src/s4u/s4u_mailbox.cpp | 8 ++++---- src/simix/libsmx.cpp | 4 ++-- 6 files changed, 22 insertions(+), 18 deletions(-) diff --git a/include/simgrid/s4u/Activity.hpp b/include/simgrid/s4u/Activity.hpp index d0c8b548fc..67fcbd52d8 100644 --- a/include/simgrid/s4u/Activity.hpp +++ b/include/simgrid/s4u/Activity.hpp @@ -49,11 +49,11 @@ public: e_s4u_activity_state_t getState() {return state_;} /** Get the remaining amount of work that this Activity entails. When it's 0, it's done. */ - double getRemains(); + size_t getRemains(); /** Set the [remaining] amount of work that this Activity will entail * * It is forbidden to change the amount of work once the Activity is started */ - void setRemains(double remains); + void setRemains(size_t remains); /** Put some user data onto the Activity */ void setUserData(void *data) {userData_=data;} @@ -63,7 +63,7 @@ public: private: simgrid::kernel::activity::ActivityImplPtr pimpl_ = nullptr; e_s4u_activity_state_t state_ = inited; - double remains_ = 0; + size_t remains_ = 0; void *userData_ = nullptr; }; // class diff --git a/include/simgrid/s4u/Mailbox.hpp b/include/simgrid/s4u/Mailbox.hpp index f7797dd75b..cc2b5c9c81 100644 --- a/include/simgrid/s4u/Mailbox.hpp +++ b/include/simgrid/s4u/Mailbox.hpp @@ -152,14 +152,17 @@ public: /** Creates (but don't start) an emission to that mailbox */ CommPtr put_init(); /** Creates (but don't start) an emission to that mailbox */ - CommPtr put_init(void* data, int simulatedByteAmount); + CommPtr put_init(void* payload, size_t simulatedSizeInBytes); /** Creates and start an async emission to that mailbox */ - CommPtr put_async(void* data, int simulatedByteAmount); + CommPtr put_async(void* payload, size_t simulatedSizeInBytes); - /** Blocking put */ - void put(void* payload, double simulatedSize); - /** Blocking put with timeout */ - void put(void* payload, double simulatedSize, double timeout); + /** Blocking emission + * + * There is no deep-copy of the payload; the pointer is just copied to the receiving actor. + */ + void put(void* payload, size_t simulatedSizeInBytes); + /** Blocking emission with timeout */ + void put(void* payload, size_t simulatedSizeInBytes, double timeout); /** Creates (but don't start) a reception onto that mailbox */ CommPtr get_init(); diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 9f51fd57fd..0b243660c1 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -229,12 +229,12 @@ SG_END_DECL() /************************** Comunication simcalls *****************************/ XBT_PUBLIC(void) -simcall_comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, +simcall_comm_send(smx_actor_t sender, smx_mailbox_t mbox, size_t task_size, double rate, void* src_buff, size_t src_buff_size, int (*match_fun)(void*, void*, simgrid::kernel::activity::CommImpl*), void (*copy_data_fun)(smx_activity_t, void*, size_t), void* data, double timeout); XBT_PUBLIC(smx_activity_t) -simcall_comm_isend(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, +simcall_comm_isend(smx_actor_t sender, smx_mailbox_t mbox, size_t task_size, double rate, void* src_buff, size_t src_buff_size, int (*match_fun)(void*, void*, simgrid::kernel::activity::CommImpl*), void (*clean_fun)(void*), void (*copy_data_fun)(smx_activity_t, void*, size_t), void* data, int detached); diff --git a/src/s4u/s4u_activity.cpp b/src/s4u/s4u_activity.cpp index 157010d222..a9d29bd8be 100644 --- a/src/s4u/s4u_activity.cpp +++ b/src/s4u/s4u_activity.cpp @@ -15,7 +15,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_activity,s4u,"S4U activities"); namespace simgrid { namespace s4u { -void Activity::setRemains(double remains) { +void Activity::setRemains(size_t remains) +{ xbt_assert(state_ == inited, "Cannot change the remaining amount of work once the Activity is started"); remains_ = remains; } diff --git a/src/s4u/s4u_mailbox.cpp b/src/s4u/s4u_mailbox.cpp index b29cfcdcba..1d28d1a6b3 100644 --- a/src/s4u/s4u_mailbox.cpp +++ b/src/s4u/s4u_mailbox.cpp @@ -73,7 +73,7 @@ CommPtr Mailbox::put_init() res->mailbox_ = this; return res; } -s4u::CommPtr Mailbox::put_init(void* data, int simulatedSize) +s4u::CommPtr Mailbox::put_init(void* data, size_t simulatedSize) { s4u::CommPtr res = put_init(); res->setRemains(simulatedSize); @@ -81,13 +81,13 @@ s4u::CommPtr Mailbox::put_init(void* data, int simulatedSize) res->srcBuffSize_ = sizeof(void*); return res; } -s4u::CommPtr Mailbox::put_async(void* data, int simulatedSize) +s4u::CommPtr Mailbox::put_async(void* data, size_t simulatedSize) { s4u::CommPtr res = put_init(data, simulatedSize); res->start(); return res; } -void Mailbox::put(void* payload, double simulatedSize) +void Mailbox::put(void* payload, size_t simulatedSize) { CommPtr c = put_init(); c->setRemains(simulatedSize); @@ -95,7 +95,7 @@ void Mailbox::put(void* payload, double simulatedSize) c->wait(); } /** Blocking send with timeout */ -void Mailbox::put(void* payload, double simulatedSize, double timeout) +void Mailbox::put(void* payload, size_t simulatedSize, double timeout) { CommPtr c = put_init(); c->setRemains(simulatedSize); diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 3ebb020edd..5c18964966 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -308,7 +308,7 @@ e_smx_state_t simcall_process_sleep(double duration) /** * \ingroup simix_comm_management */ -void simcall_comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, +void simcall_comm_send(smx_actor_t sender, smx_mailbox_t mbox, size_t task_size, double rate, void* src_buff, size_t src_buff_size, int (*match_fun)(void*, void*, simgrid::kernel::activity::CommImpl*), void (*copy_data_fun)(smx_activity_t, void*, size_t), void* data, double timeout) { @@ -336,7 +336,7 @@ void simcall_comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, /** * \ingroup simix_comm_management */ -smx_activity_t simcall_comm_isend(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, +smx_activity_t simcall_comm_isend(smx_actor_t sender, smx_mailbox_t mbox, size_t task_size, double rate, void* src_buff, size_t src_buff_size, int (*match_fun)(void*, void*, simgrid::kernel::activity::CommImpl*), void (*clean_fun)(void*), void (*copy_data_fun)(smx_activity_t, void*, size_t), -- 2.20.1