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);
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 ***************************/
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
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);
}
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;
/* 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;
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;
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)