free(stype->model);
free(stype->type_id);
free(stype->content);
+ free(stype->content_type);
xbt_dict_free(&(stype->properties));
xbt_dict_free(&(stype->properties));
free(stype);
mnt.name = xbt_strdup(mount->name);
if(!mount_list){
- //FIXME:XBT_DEBUG("Create a Mount list for %s",A_surfxml_host_id);
+ XBT_DEBUG("Create a Mount list for %s",A_surfxml_host_id);
mount_list = xbt_dynar_new(sizeof(s_mount_t), mount_free);
}
xbt_dynar_push(mount_list,&mnt);
XBT_DEBUG("storage_share_resources %f", now);
unsigned int i, j;
StoragePtr storage;
+ void *_write_action;
StorageActionLmmPtr write_action;
double min_completion = shareResourcesMaxMin(p_runningActionSet,
{
rate = 0;
// Foreach write action on disk
- xbt_dynar_foreach(storage->p_writeActions, j, write_action)
+ xbt_dynar_foreach(storage->p_writeActions, j, _write_action)
{
+ write_action = dynamic_cast<StorageActionLmmPtr>(static_cast<ActionPtr>(_write_action));
rate += lmm_variable_getvalue(write_action->p_variable);
}
if(rate > 0)
Storage::Storage(StorageModelPtr model, const char* name, xbt_dict_t properties)
: Resource(model, name, properties)
{
- p_writeActions = xbt_dynar_new(sizeof(char *),NULL);
+ p_writeActions = xbt_dynar_new(sizeof(ActionPtr),NULL);
}
StorageLmm::StorageLmm(StorageModelPtr model, const char* name, xbt_dict_t properties,
lmm_system_t maxminSystem, double bread, double bwrite, double bconnection,
- const char* type_id, char *content_name, char *content_type, size_t size)
+ const char* type_id, char *content_name, char *content_type, sg_size_t size)
: Resource(model, name, properties), ResourceLmm(), Storage(model, name, properties) {
- XBT_DEBUG("Create resource with Bconnection '%f' Bread '%f' Bwrite '%f' and Size '%lu'", bconnection, bread, bwrite, ((unsigned long)size));
+ XBT_DEBUG("Create resource with Bconnection '%f' Bread '%f' Bwrite '%f' and Size '%llu'", bconnection, bread, bwrite, size);
p_stateCurrent = SURF_RESOURCE_ON;
m_usedSize = 0;
char *filename = fd->name;
XBT_DEBUG("\tClose file '%s' size '%llu'", filename, fd->size);
// unref write actions from storage
+ void *_write_action;
StorageActionLmmPtr write_action;
unsigned int i;
- xbt_dynar_foreach(p_writeActions, i, write_action) {
+ xbt_dynar_foreach(p_writeActions, i, _write_action) {
+ write_action = dynamic_cast<StorageActionLmmPtr>(static_cast<ActionPtr>(_write_action));
if ((write_action->p_file) == fd) {
xbt_dynar_cursor_rm(p_writeActions, &i);
write_action->unref();
**********/
StorageActionLmm::StorageActionLmm(ModelPtr model, double cost, bool failed, StorageLmmPtr storage, e_surf_action_storage_type_t type)
- : Action(model, cost, failed), ActionLmm(model, cost, failed), StorageAction(model, cost, failed, storage, type) {
+ : Action(model, cost, failed),
+ ActionLmm(model, cost, failed),
+ StorageAction(model, cost, failed, storage, type) {
XBT_IN("(%s,%g", storage->m_name, cost);
p_variable = lmm_variable_new(p_model->p_maxminSystem, this, 1.0, -1.0 , 3);
case WRITE:
lmm_expand(p_model->p_maxminSystem, storage->p_constraintWrite,
p_variable, 1.0);
- xbt_dynar_push(storage->p_writeActions, static_cast<ActionPtr>(this));
+ ActionPtr action = this;
+ xbt_dynar_push(storage->p_writeActions, &action);
+ ref();
break;
}
XBT_OUT();