From: Pierre Veyre Date: Wed, 2 Oct 2013 20:26:41 +0000 (+0200) Subject: Add MSG_storage_get_size function X-Git-Tag: v3_9_90~42 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/7831a2d293360cea1fd3cfbccde906a0018be13b Add MSG_storage_get_size function --- diff --git a/include/msg/msg.h b/include/msg/msg.h index 2e6820842f..fa2fc66e6b 100644 --- a/include/msg/msg.h +++ b/include/msg/msg.h @@ -106,6 +106,7 @@ XBT_PUBLIC(xbt_dynar_t) MSG_storages_as_dynar(void); XBT_PUBLIC(msg_error_t) MSG_storage_set_data(msg_storage_t host, void *data); XBT_PUBLIC(void *) MSG_storage_get_data(msg_storage_t storage); XBT_PUBLIC(xbt_dict_t) MSG_storage_get_content(msg_storage_t storage); +XBT_PUBLIC(sg_storage_size_t) MSG_storage_get_size(msg_storage_t storage); /************************** AS Router handling ************************************/ XBT_PUBLIC(const char *) MSG_as_router_get_property_value(const char* asr, const char *name); XBT_PUBLIC(xbt_dict_t) MSG_as_router_get_properties(const char* asr); diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 1cce813a1d..ecdd1d62ed 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -499,6 +499,7 @@ XBT_PUBLIC(void) SIMIX_storage_set_data(smx_storage_t storage, void *data); XBT_PUBLIC(xbt_dict_t) SIMIX_storage_get_content(smx_storage_t storage); XBT_PUBLIC(xbt_dict_t) simcall_storage_get_content(smx_storage_t storage); XBT_PUBLIC(const char*) SIMIX_storage_get_name(smx_host_t host); +XBT_PUBLIC(sg_storage_size_t) SIMIX_storage_get_size(smx_storage_t storage); /************************** AS router **********************************/ XBT_PUBLIC(xbt_dict_t) SIMIX_asr_get_properties(const char *name); /************************** AS router simcalls ***************************/ diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 1e34b2c766..0f0694a186 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -239,6 +239,7 @@ typedef struct surf_storage_model_extension_public { surf_action_t(*ls) (void *storage, const char *path); xbt_dict_t(*get_properties) (const void *storage); xbt_dict_t(*get_content) (void *storage); + sg_storage_size_t(*get_size) (void *storage); } s_surf_model_extension_storage_t; /** \ingroup SURF_models diff --git a/src/msg/msg_io.c b/src/msg/msg_io.c index 1d4c19e05c..0bf3c59e3b 100644 --- a/src/msg/msg_io.c +++ b/src/msg/msg_io.c @@ -326,5 +326,9 @@ void *MSG_storage_get_data(msg_storage_t storage) xbt_dict_t MSG_storage_get_content(msg_storage_t storage) { return SIMIX_storage_get_content(storage); - //return (simcall_storage_get_properties(storage)); +} + +sg_storage_size_t MSG_storage_get_size(msg_storage_t storage) +{ + return SIMIX_storage_get_size(storage); } diff --git a/src/simix/smx_io.c b/src/simix/smx_io.c index aee5550b9a..519ce6de3d 100644 --- a/src/simix/smx_io.c +++ b/src/simix/smx_io.c @@ -352,6 +352,11 @@ xbt_dict_t SIMIX_storage_get_content(smx_storage_t storage){ return surf_storage_model->extension.storage.get_content(storage); } +sg_storage_size_t SIMIX_storage_get_size(smx_storage_t storage){ + xbt_assert((storage != NULL), "Invalid parameters (simix storage is NULL)"); + return surf_storage_model->extension.storage.get_size(storage); +} + void SIMIX_post_io(smx_action_t action) { xbt_fifo_item_t i; diff --git a/src/surf/storage.c b/src/surf/storage.c index c36d8e68b4..e3679738df 100644 --- a/src/surf/storage.c +++ b/src/surf/storage.c @@ -203,17 +203,22 @@ static xbt_dict_t storage_get_content(void *storage) /* For the moment this action has no cost, but in the future we could take in account access latency of the disk */ /*surf_action_t action = storage_action_execute(storage,0, LS);*/ - void *st = surf_storage_resource_priv(storage); + void *storage_resource = surf_storage_resource_priv(storage); xbt_dict_t content_dict = xbt_dict_new_homogeneous(NULL); xbt_dict_cursor_t cursor = NULL; char *file; char *size; - xbt_dict_foreach(((storage_t)st)->content, cursor, file, size){ + xbt_dict_foreach(((storage_t)storage_resource)->content, cursor, file, size){ xbt_dict_set(content_dict,file,(void*)size,NULL); } return content_dict; } +static sg_storage_size_t storage_get_size(void *storage){ + void *storage_resource = surf_storage_resource_priv(storage); + return ((storage_t)storage_resource)->size; +} + static void* storage_create_resource(const char* id, const char* model, const char* type_id, const char* content_name, const char* content_type, xbt_dict_t properties){ storage_t storage = NULL; @@ -522,11 +527,10 @@ static void surf_storage_model_init_internal(void) surf_storage_model->extension.storage.ls = storage_action_ls; surf_storage_model->extension.storage.get_properties = storage_get_properties; surf_storage_model->extension.storage.get_content = storage_get_content; - + surf_storage_model->extension.storage.get_size = storage_get_size; if (!storage_maxmin_system) { storage_maxmin_system = lmm_system_new(storage_selective_update); } - } void surf_storage_model_init_default(void)