X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ae792975a9bd0da6d48aa054ab800e0fc24fbee2..4aca100a662f2662abd12850ddb62dd3415aaf16:/src/surf/workstation.c diff --git a/src/surf/workstation.c b/src/surf/workstation.c index 946df08513..88f4802e95 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -14,6 +14,7 @@ typedef struct workstation_CLM03 { s_surf_resource_t generic_resource; /* Must remain first to add this to a trace */ void *cpu; + void *net_card; xbt_dynar_t storage; } s_workstation_CLM03_t, *workstation_CLM03_t; @@ -277,23 +278,29 @@ static xbt_dict_t ws_get_properties(const void *ws) 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); @@ -301,21 +308,7 @@ static surf_action_t ws_action_open(void *workstation, const char* storage, cons 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); @@ -323,21 +316,7 @@ static surf_action_t ws_action_close(void *workstation, const char* storage, sur 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); @@ -345,21 +324,7 @@ static surf_action_t ws_action_read(void *workstation, const char* storage, void 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); @@ -367,21 +332,7 @@ static surf_action_t ws_action_write(void *workstation, const char* storage, con 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);