"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
for (ctr=0; ctr<total_nworkstations;ctr++){
current_storage_list = SD_workstation_get_storage_list(workstations[ctr]);
- xbt_dynar_foreach(current_storage_list, ctr2, mount_name)
+ xbt_dict_foreach(current_storage_list,cursor,mount_name,storage_name)
XBT_INFO("Workstation '%s' mounts '%s'",
SD_workstation_get_name(workstations[ctr]), mount_name);
- xbt_dynar_free_container(¤t_storage_list);
+ xbt_dict_free(¤t_storage_list);
}
SD_exit();
return 0;
XBT_PUBLIC(msg_host_t) MSG_get_host_by_name(const char *name);
XBT_PUBLIC(xbt_dynar_t) MSG_hosts_as_dynar(void);
XBT_PUBLIC(int) MSG_get_host_number(void);
-XBT_PUBLIC(xbt_dynar_t) MSG_host_get_storage_list(msg_host_t host);
+XBT_PUBLIC(xbt_dict_t) MSG_host_get_storage_list(msg_host_t host);
XBT_PUBLIC(xbt_dynar_t) MSG_host_get_storage_content(msg_host_t host);
/************************** Process handling *********************************/
XBT_PUBLIC(msg_process_t) MSG_process_create(const char *name,
XBT_PUBLIC(SD_task_t) SD_workstation_get_current_task(SD_workstation_t
workstation);
-XBT_PUBLIC(xbt_dynar_t)
+XBT_PUBLIC(xbt_dict_t)
SD_workstation_get_storage_list(SD_workstation_t workstation);
/** @} */
XBT_PUBLIC(void*) SIMIX_host_self_get_data(void);
XBT_PUBLIC(void*) SIMIX_host_get_data(smx_host_t host);
XBT_PUBLIC(void) SIMIX_host_set_data(smx_host_t host, void *data);
-XBT_PUBLIC(xbt_dynar_t) SIMIX_host_get_storage_list(smx_host_t host);
+XBT_PUBLIC(xbt_dict_t) SIMIX_host_get_storage_list(smx_host_t host);
/********************************* Process ************************************/
XBT_PUBLIC(int) SIMIX_process_count(void);
XBT_PUBLIC(smx_process_t) SIMIX_process_self(void);
XBT_PUBLIC(e_smx_state_t) simcall_host_execution_get_state(smx_action_t execution);
XBT_PUBLIC(void) simcall_host_execution_set_priority(smx_action_t execution, double priority);
XBT_PUBLIC(e_smx_state_t) simcall_host_execution_wait(smx_action_t execution);
-XBT_PUBLIC(xbt_dynar_t) simcall_host_get_storage_list(smx_host_t host);
+XBT_PUBLIC(xbt_dict_t) simcall_host_get_storage_list(smx_host_t host);
/**************************** Process simcalls ********************************/
/* Constructor and Destructor */
size_t (*get_free_size) (void *workstation,const char* name);
size_t (*get_used_size) (void *workstation,const char* name);
- xbt_dynar_t (*get_storage_list) (void *workstation);
+ xbt_dict_t (*get_storage_list) (void *workstation);
} s_surf_model_extension_workstation_t;
}
/** \ingroup m_host_management
- * \brief Return the list of mounted storages on an host.
+ * \brief Return the list of mount point names on an host.
* \param host a host
- * \return a dynar containing all storages mounted on the host
+ * \return a dict containing all mount point on the host (mount_name => 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));
{
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;
}
* \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);
}
}
#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);
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*);
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);
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 \
* \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);
}
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;
}