From: Pierre Veyre Date: Thu, 26 Sep 2013 14:50:09 +0000 (+0200) Subject: Change MSG_host_get_storage_list function + update simdag-io example X-Git-Tag: v3_9_90~72 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e26762bef97dffeaca2bbc7623153a793766de45?hp=-c Change MSG_host_get_storage_list function + update simdag-io example --- e26762bef97dffeaca2bbc7623153a793766de45 diff --git a/examples/simdag/io/sd_io.c b/examples/simdag/io/sd_io.c index c64fe6ac94..5d3070350b 100644 --- a/examples/simdag/io/sd_io.c +++ b/examples/simdag/io/sd_io.c @@ -14,11 +14,13 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(sd_io, "Logging specific to this SimDag example"); int main(int argc, char **argv) { - unsigned int ctr, ctr2; + unsigned int ctr; const SD_workstation_t *workstations; int total_nworkstations; - xbt_dynar_t current_storage_list; + xbt_dict_t current_storage_list; char *mount_name; + char *storage_name; + xbt_dict_cursor_t cursor = NULL; SD_init(&argc, argv); /* Set the workstation model to default, as storage is not supported by the @@ -31,10 +33,10 @@ int main(int argc, char **argv) for (ctr=0; ctr msg_storage_t) */ -xbt_dynar_t MSG_host_get_storage_list(msg_host_t host) +xbt_dict_t MSG_host_get_storage_list(msg_host_t host) { xbt_assert((host != NULL), "Invalid parameters"); return (simcall_host_get_storage_list(host)); @@ -358,14 +358,16 @@ xbt_dynar_t MSG_host_get_storage_content(msg_host_t host) { xbt_assert((host != NULL), "Invalid parameters"); xbt_dynar_t contents = xbt_dynar_new(sizeof(void *),NULL); - msg_storage_t storage; - char* storage_name; - unsigned int i; - xbt_dynar_t storage_list = simcall_host_get_storage_list(host); - xbt_dynar_foreach(storage_list, i, storage_name){ - storage = xbt_lib_get_elm_or_null(storage_lib,storage_name); - xbt_dict_t content = simcall_storage_get_content(storage); - xbt_dynar_push(contents, &content); - } +// msg_storage_t storage; +// char* storage_name; +// unsigned int i; +// xbt_dynar_t storage_list = simcall_host_get_storage_list(host); +// xbt_dynar_foreach(storage_list, i, storage_name){ +// storage = xbt_lib_get_elm_or_null(storage_lib,storage_name); +// +// XBT_INFO("STORAGE NAME: %s", storage_name); +// xbt_dict_t content = simcall_storage_get_content(storage); +// xbt_dynar_push(contents, &content); +// } return contents; } diff --git a/src/simdag/sd_workstation.c b/src/simdag/sd_workstation.c index f035d13ed9..574c99c586 100644 --- a/src/simdag/sd_workstation.c +++ b/src/simdag/sd_workstation.c @@ -482,7 +482,7 @@ void SD_workstation_set_access_mode(SD_workstation_t workstation, * \param workstation a workstation * \return a dynar containing all mounted storages on the workstation */ -xbt_dynar_t SD_workstation_get_storage_list(SD_workstation_t workstation){ +xbt_dict_t SD_workstation_get_storage_list(SD_workstation_t workstation){ return surf_workstation_model->extension.workstation.get_storage_list(workstation); } diff --git a/src/simix/smx_host.c b/src/simix/smx_host.c index 5b7b0e9767..5ef2bd9e5c 100644 --- a/src/simix/smx_host.c +++ b/src/simix/smx_host.c @@ -626,10 +626,10 @@ void SIMIX_set_category(smx_action_t action, const char *category) } #endif -xbt_dynar_t SIMIX_pre_host_get_storage_list(smx_simcall_t simcall, smx_host_t host){ +xbt_dict_t SIMIX_pre_host_get_storage_list(smx_simcall_t simcall, smx_host_t host){ return SIMIX_host_get_storage_list(host); } -xbt_dynar_t SIMIX_host_get_storage_list(smx_host_t host){ +xbt_dict_t SIMIX_host_get_storage_list(smx_host_t host){ xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); return surf_workstation_model->extension.workstation.get_storage_list(host); diff --git a/src/simix/smx_host_private.h b/src/simix/smx_host_private.h index c5099bdba9..f91d19df29 100644 --- a/src/simix/smx_host_private.h +++ b/src/simix/smx_host_private.h @@ -60,7 +60,7 @@ double SIMIX_host_execution_get_remains(smx_action_t action); e_smx_state_t SIMIX_host_execution_get_state(smx_action_t action); void SIMIX_host_execution_set_priority(smx_action_t action, double priority); void SIMIX_pre_host_execution_wait(smx_simcall_t simcall, smx_action_t action); -xbt_dynar_t SIMIX_host_get_storage_list(smx_host_t host); +xbt_dict_t SIMIX_host_get_storage_list(smx_host_t host); // pre prototypes smx_host_t SIMIX_pre_host_get_by_name(smx_simcall_t, const char*); @@ -93,7 +93,7 @@ void SIMIX_host_execution_suspend(smx_action_t action); void SIMIX_host_execution_resume(smx_action_t action); void SIMIX_post_host_execute(smx_action_t action); -xbt_dynar_t SIMIX_pre_host_get_storage_list(smx_simcall_t, smx_host_t); +xbt_dict_t SIMIX_pre_host_get_storage_list(smx_simcall_t, smx_host_t); #ifdef HAVE_TRACING void SIMIX_pre_set_category(smx_simcall_t simcall, smx_action_t action, const char *category); diff --git a/src/simix/smx_smurf_private.h b/src/simix/smx_smurf_private.h index 084a6bb515..0b57815dc4 100644 --- a/src/simix/smx_smurf_private.h +++ b/src/simix/smx_smurf_private.h @@ -282,7 +282,7 @@ ACTION(SIMCALL_HOST_EXECUTION_GET_REMAINS, host_execution_get_remains, WITH_ANSW ACTION(SIMCALL_HOST_EXECUTION_GET_STATE, host_execution_get_state, WITH_ANSWER, TINT(result), TSPEC(execution, smx_action_t)) sep \ ACTION(SIMCALL_HOST_EXECUTION_SET_PRIORITY, host_execution_set_priority, WITH_ANSWER, TVOID(result), TSPEC(execution, smx_action_t), TDOUBLE(priority)) sep \ ACTION(SIMCALL_HOST_EXECUTION_WAIT, host_execution_wait, WITHOUT_ANSWER, TINT(result), TSPEC(execution, smx_action_t)) sep \ -ACTION(SIMCALL_HOST_GET_STORAGE_LIST, host_get_storage_list, WITH_ANSWER, TSPEC(result, xbt_dynar_t), TSPEC(host, smx_host_t)) sep \ +ACTION(SIMCALL_HOST_GET_STORAGE_LIST, host_get_storage_list, WITH_ANSWER, TSPEC(result, xbt_dict_t), TSPEC(host, smx_host_t)) sep \ ACTION(SIMCALL_PROCESS_CREATE, process_create, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t*), TSTRING(name), TSPEC(code, xbt_main_func_t), TPTR(data), TSTRING(hostname), TDOUBLE(kill_time), TINT(argc), TSPEC(argv, char**), TSPEC(properties, xbt_dict_t), TINT(auto_restart)) sep \ ACTION(SIMCALL_PROCESS_KILL, process_kill, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t)) sep \ ACTION(SIMCALL_PROCESS_KILLALL, process_killall, WITH_ANSWER, TVOID(result), TINT(reset_pid)) sep \ diff --git a/src/simix/smx_user.c b/src/simix/smx_user.c index 4b873f93f8..75e467b88d 100644 --- a/src/simix/smx_user.c +++ b/src/simix/smx_user.c @@ -1293,9 +1293,9 @@ size_t simcall_storage_get_used_size (const char* name){ * \ingroup simix_storage_management * \brief Returns the list of storages mounted on an host. * \param host A SIMIX host - * \return a dynar containing all storages mounted on the host + * \return a dict containing all storages mounted on the host */ -xbt_dynar_t simcall_host_get_storage_list(smx_host_t host) +xbt_dict_t simcall_host_get_storage_list(smx_host_t host) { return simcall_BODY_host_get_storage_list(host); } diff --git a/src/surf/workstation.c b/src/surf/workstation.c index 86f6619d19..e328332fee 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -365,18 +365,20 @@ static storage_t find_storage_on_mount_list(void *workstation,const char* mount) return st; } -static xbt_dynar_t ws_get_storage_list(void *workstation) +static xbt_dict_t ws_get_storage_list(void *workstation) { s_mount_t mnt; unsigned int i; - xbt_dynar_t storage_list = xbt_dynar_new(sizeof(char*), NULL); + xbt_dict_t storage_list = xbt_dict_new(); + char *storage_name = NULL; workstation_CLM03_t ws = (workstation_CLM03_t) surf_workstation_resource_priv(workstation); xbt_dynar_t storages = ws->storage; xbt_dynar_foreach(storages,i,mnt) { - xbt_dynar_push(storage_list, &mnt.name); + storage_name = ((storage_t)mnt.storage)->generic_resource.name; + xbt_dict_set(storage_list,mnt.name,storage_name,NULL); } return storage_list; }