#define GENERIC_ACTION(action) GENERIC_LMM_ACTION(action).generic_action
static xbt_dict_t parse_storage_content(char *filename, unsigned long *used_size);
+static int storage_action_unref(surf_action_t action);
static void storage_action_state_set(surf_action_t action, e_surf_action_state_t state);
static surf_action_t storage_action_execute (void *storage, double size, e_surf_action_storage_type_t type);
static void free_storage_content(void *p);
{
storage_t storage = NULL;
- xbt_assert(!surf_storage_resource_by_name(id),
+ xbt_assert(!surf_storage_resource_priv(surf_storage_resource_by_name(id)),
"Storage '%s' declared several times in the platform file",
id);
storage = (storage_t) surf_resource_new(sizeof(s_storage_t),
return storage;
}
-static void storage_finalize(void)
+static void storage_finalize(surf_model_t storage_model)
{
lmm_system_free(storage_maxmin_system);
storage_maxmin_system = NULL;
- surf_model_exit(surf_storage_model);
- surf_storage_model = NULL;
+ surf_model_exit(storage_model);
+ storage_model = NULL;
if(storage_list)
xbt_dynar_free(&storage_list);
storage_running_action_set_that_does_not_need_being_checked = NULL;
}
-static void storage_update_actions_state(double now, double delta)
+static void storage_update_actions_state(surf_model_t storage_model, double now, double delta)
{
surf_action_storage_t action = NULL;
surf_action_storage_t next_action = NULL;
- xbt_swag_t running_actions = surf_storage_model->states.running_action_set;
+ xbt_swag_t running_actions = storage_model->states.running_action_set;
// Update the disk usage
// Update the file size
return;
}
-static double storage_share_resources(double NOW)
+static double storage_share_resources(surf_model_t storage_model, double NOW)
{
XBT_DEBUG("storage_share_resources %f",NOW);
s_surf_action_storage_t action;
storage_t storage;
surf_action_storage_t write_action;
- double min_completion = generic_maxmin_share_resources(surf_storage_model->states.running_action_set,
+ double min_completion = generic_maxmin_share_resources(storage_model->states.running_action_set,
xbt_swag_offset(action, generic_lmm_action.variable),
storage_maxmin_system, lmm_solve);
xbt_swag_new(xbt_swag_offset(action, state_hookup));
surf_storage_model->name = "Storage";
+ surf_storage_model->type = SURF_MODEL_TYPE_STORAGE;
surf_storage_model->action_unref = storage_action_unref;
surf_storage_model->action_cancel = storage_action_cancel;
surf_storage_model->action_state_set = storage_action_state_set;
surf_storage_model->extension.storage.stat = storage_action_stat;
surf_storage_model->extension.storage.unlink = storage_action_unlink;
surf_storage_model->extension.storage.ls = storage_action_ls;
- surf_storage_model->extension.storage.create_resource = storage_create_resource;
if (!storage_maxmin_system) {
storage_maxmin_system = lmm_system_new(storage_selective_update);
surf_stat_t content;
- while ((read = getline(&line, &len, file)) != -1) {
+ while ((read = xbt_getline(&line, &len, file)) != -1) {
+ if (read){
content = xbt_new0(s_surf_stat_t,1);
if(sscanf(line,"%s %d %s %s %ld %s %s %s",user_rights,&nb,user,group,&size,date,time,path)==8) {
- content->stat.date = xbt_strdup(date);
- content->stat.group = xbt_strdup(group);
- content->stat.size = size;
- content->stat.time = xbt_strdup(time);
- content->stat.user = xbt_strdup(user);
- content->stat.user_rights = xbt_strdup(user_rights);
- *used_size += content->stat.size;
- xbt_dict_set(parse_content,path,content,NULL);
- } else {
- xbt_die("Be sure of passing a good format for content file.\n");
- // You can generate this kind of file with command line:
- // find /path/you/want -type f -exec ls -l {} \; 2>/dev/null > ./content.txt
+ content->stat.date = xbt_strdup(date);
+ content->stat.group = xbt_strdup(group);
+ content->stat.size = size;
+ content->stat.time = xbt_strdup(time);
+ content->stat.user = xbt_strdup(user);
+ content->stat.user_rights = xbt_strdup(user_rights);
+ *used_size += content->stat.size;
+ xbt_dict_set(parse_content,path,content,NULL);
+ } else {
+ xbt_die("Be sure of passing a good format for content file.\n");
+ // You can generate this kind of file with command line:
+ // find /path/you/want -type f -exec ls -l {} \; 2>/dev/null > ./content.txt
+ }
}
}
if (line)
XBT_DEBUG("ROUTING Mount '%s' on '%s'",mount->id, mount->name);
s_mount_t mnt;
- mnt.id = surf_storage_resource_by_name(mount->id);
+ mnt.id = surf_storage_resource_priv(surf_storage_resource_by_name(mount->id));
mnt.name = xbt_strdup(mount->name);
if(!mount_list){