From 3c54d02850abee2eae461d8bf2d02684ea3c7597 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Fri, 2 Sep 2016 17:52:26 +0200 Subject: [PATCH] use vector for file descriptor table move the host private struct to msg_private.h --- include/simgrid/msg.h | 9 --------- src/msg/msg_host.cpp | 17 ++++++++--------- src/msg/msg_private.h | 10 +++++++++- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/include/simgrid/msg.h b/include/simgrid/msg.h index 0be8eadb9d..5965716b9d 100644 --- a/include/simgrid/msg.h +++ b/include/simgrid/msg.h @@ -31,17 +31,8 @@ typedef simgrid_As *msg_as_t; */ typedef sg_host_t msg_host_t; -typedef struct s_msg_host_priv { - int dp_enabled; - xbt_dict_t dp_objs; - double dp_updated_by_deleted_tasks; - int is_migrating; - - xbt_dynar_t file_descriptor_table; -} s_msg_host_priv_t; XBT_PUBLIC_DATA(int) sg_storage_max_file_descriptors; - /* ******************************** Task ************************************ */ typedef struct simdata_task *simdata_task_t; diff --git a/src/msg/msg_host.cpp b/src/msg/msg_host.cpp index d9bf83de84..6a56a66425 100644 --- a/src/msg/msg_host.cpp +++ b/src/msg/msg_host.cpp @@ -33,9 +33,8 @@ msg_host_t __MSG_host_create(sg_host_t host) // FIXME: don't return our paramete priv->dp_updated_by_deleted_tasks = 0; priv->is_migrating = 0; - priv->file_descriptor_table = xbt_dynar_new(sizeof(int), nullptr); - for (int i=sg_storage_max_file_descriptors-1; i>=0;i--) - xbt_dynar_push_as(priv->file_descriptor_table, int, i); + priv->file_descriptor_table = new std::vector(sg_storage_max_file_descriptors); + std::iota (priv->file_descriptor_table->rbegin(), priv->file_descriptor_table->rend(), 0); // Fill with ..., 1, 0. sg_host_msg_set(host,priv); @@ -119,8 +118,7 @@ void __MSG_host_priv_free(msg_host_priv_t priv) if (size > 0) XBT_WARN("dp_objs: %u pending task?", size); xbt_dict_free(&priv->dp_objs); - xbt_dynar_free(&priv->file_descriptor_table); - + delete priv->file_descriptor_table; free(priv); } @@ -157,7 +155,6 @@ double MSG_get_host_speed(msg_host_t host) { return MSG_host_get_speed(host); } - /** \ingroup m_host_management * \brief Return the number of cores. * @@ -342,11 +339,13 @@ xbt_dict_t MSG_host_get_storage_content(msg_host_t host) int __MSG_host_get_file_descriptor_id(msg_host_t host){ msg_host_priv_t priv = sg_host_msg(host); - xbt_assert(!xbt_dynar_is_empty(priv->file_descriptor_table), "Too much files are opened! Some have to be closed."); - return xbt_dynar_pop_as(priv->file_descriptor_table, int); + xbt_assert(!priv->file_descriptor_table->empty(), "Too much files are opened! Some have to be closed."); + int desc = priv->file_descriptor_table->back(); + priv->file_descriptor_table->pop_back(); + return desc; } void __MSG_host_release_file_descriptor_id(msg_host_t host, int id){ msg_host_priv_t priv = sg_host_msg(host); - xbt_dynar_push_as(priv->file_descriptor_table, int, id); + priv->file_descriptor_table->push_back(id); } diff --git a/src/msg/msg_private.h b/src/msg/msg_private.h index d81cd1520d..3482e3c12b 100644 --- a/src/msg/msg_private.h +++ b/src/msg/msg_private.h @@ -27,7 +27,15 @@ SG_BEGIN_DECL() /**************** datatypes **********************************/ - +/********************************* Host **************************************/ +typedef struct s_msg_host_priv { + int dp_enabled; + xbt_dict_t dp_objs; + double dp_updated_by_deleted_tasks; + int is_migrating; + + std::vector *file_descriptor_table; +} s_msg_host_priv_t; /********************************* Task **************************************/ typedef struct simdata_task { -- 2.20.1