return surf_resource_properties(((workstation_CLM03_t) ws)->cpu);
}
-static surf_action_t ws_action_open(void *workstation, const char* storage, const char* path, const char* mode)
+static storage_t find_storage_on_mount_list(void *workstation,const char* storage)
{
storage_t st = NULL;
- mount_t mnt = NULL;
+ s_mount_t mnt;
unsigned int cursor;
xbt_dynar_t storage_list = ((workstation_CLM03_t) workstation)->storage;
XBT_DEBUG("Search for storage name '%s' on '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
xbt_dynar_foreach(storage_list,cursor,mnt)
{
- XBT_DEBUG("See '%s'",mnt->name);
- if(!strcmp(storage,mnt->name)){
- st = surf_storage_resource_by_name(mnt->id);
- break;
- }
+ XBT_DEBUG("See '%s'",mnt.name);
+ if(!strcmp(storage,mnt.name)){
+ st = mnt.id;
+ break;
+ }
}
- if(!st) xbt_die("Don't find mount '%s' for '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ if(!st) xbt_die("Can't find mount '%s' for '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ return st;
+}
+
+static surf_action_t ws_action_open(void *workstation, const char* storage, const char* path, const char* mode)
+{
+ storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("OPEN on disk '%s'",st->generic_resource.name);
surf_model_t model = st->generic_resource.model;
return model->extension.storage.open(st, path, mode);
static surf_action_t ws_action_close(void *workstation, const char* storage, surf_file_t fp)
{
- storage_t st = NULL;
- mount_t mnt = NULL;
- unsigned int cursor;
- xbt_dynar_t storage_list = ((workstation_CLM03_t) workstation)->storage;
-
- XBT_DEBUG("Search for storage name '%s' on '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
- xbt_dynar_foreach(storage_list,cursor,mnt)
- {
- XBT_DEBUG("See '%s'",mnt->name);
- if(!strcmp(storage,mnt->name)){
- st = surf_storage_resource_by_name(mnt->id);
- break;
- }
- }
- if(!st) xbt_die("Don't find mount '%s' for '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("CLOSE on disk '%s'",st->generic_resource.name);
surf_model_t model = st->generic_resource.model;
return model->extension.storage.close(st, fp);
static surf_action_t ws_action_read(void *workstation, const char* storage, void* ptr, size_t size, size_t nmemb, surf_file_t stream)
{
- storage_t st = NULL;
- mount_t mnt = NULL;
- unsigned int cursor;
- xbt_dynar_t storage_list = ((workstation_CLM03_t) workstation)->storage;
-
- XBT_DEBUG("Search for storage name '%s' on '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
- xbt_dynar_foreach(storage_list,cursor,mnt)
- {
- XBT_DEBUG("See '%s'",mnt->name);
- if(!strcmp(storage,mnt->name)){
- st = surf_storage_resource_by_name(mnt->id);
- break;
- }
- }
- if(!st) xbt_die("Don't find mount '%s' for '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("READ on disk '%s'",st->generic_resource.name);
surf_model_t model = st->generic_resource.model;
return model->extension.storage.read(st, ptr, size, nmemb, stream);
static surf_action_t ws_action_write(void *workstation, const char* storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream)
{
- storage_t st = NULL;
- mount_t mnt = NULL;
- unsigned int cursor;
- xbt_dynar_t storage_list = ((workstation_CLM03_t) workstation)->storage;
-
- XBT_DEBUG("Search for storage name '%s' on '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
- xbt_dynar_foreach(storage_list,cursor,mnt)
- {
- XBT_DEBUG("See '%s'",mnt->name);
- if(!strcmp(storage,mnt->name)){
- st = surf_storage_resource_by_name(mnt->id);
- break;
- }
- }
- if(!st) xbt_die("Don't find mount '%s' for '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("WRITE on disk '%s'",st->generic_resource.name);
surf_model_t model = st->generic_resource.model;
return model->extension.storage.write(st, ptr, size, nmemb, stream);
static surf_action_t ws_action_stat(void *workstation, const char* storage, int fd, void* buf)
{
- storage_t st = NULL;
- mount_t mnt = NULL;
- unsigned int cursor;
- xbt_dynar_t storage_list = ((workstation_CLM03_t) workstation)->storage;
-
- XBT_DEBUG("Search for storage name '%s' on '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
- xbt_dynar_foreach(storage_list,cursor,mnt)
- {
- XBT_DEBUG("See '%s'",mnt->name);
- if(!strcmp(storage,mnt->name)){
- st = surf_storage_resource_by_name(mnt->id);
- break;
- }
- }
- if(!st) xbt_die("Don't find mount '%s' for '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("STAT on disk '%s'",st->generic_resource.name);
surf_model_t model = st->generic_resource.model;
return model->extension.storage.stat(st, fd, buf);