xbt_dict_remove(content_dict,stream->name);
free(stream->name);
- stream->content = NULL;
xbt_free(stream);
return action;
}
free(fp->name);
- fp->content = NULL;
xbt_free(fp);
surf_action_t action = storage_action_execute(storage,0, CLOSE);
return action;
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);
+ xbt_dynar_free(&storage_list);
xbt_swag_free
(storage_running_action_set_that_does_not_need_being_checked);
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_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)
- free(line);
+ free(line);
fclose(file);
return parse_content;
}