X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/50486ccd16de39a3659592fab44adfaf3104a086..e64ae6980f1b1f8b51d06f21fb1f5df9586c2333:/src/surf/workstation.c diff --git a/src/surf/workstation.c b/src/surf/workstation.c index 3f0b34461b..3adf803a2e 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -123,8 +123,8 @@ static void ws_update_resource_state(void *id, static surf_action_t ws_execute(void *workstation, double size) { - return surf_cpu_model->extension.cpu. - execute(((workstation_CLM03_t) workstation)->cpu, size); + void *cpu = ((workstation_CLM03_t) workstation)->cpu; + return ((surf_resource_t) cpu)->model->extension.cpu.execute(cpu, size); } static surf_action_t ws_action_sleep(void *workstation, double duration) @@ -276,7 +276,7 @@ static double ws_get_link_latency(const void *link) static int ws_link_shared(const void *link) { - return surf_network_model->extension.network.get_link_latency(link); + return surf_network_model->extension.network.link_shared(link); } static void ws_finalize(void) @@ -290,6 +290,36 @@ 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* path, const char* mode) +{ + return surf_cpu_model->extension.cpu. + sleep(((workstation_CLM03_t) workstation)->cpu, 1); +} + +static surf_action_t ws_action_close(void *workstation, surf_file_t fp) +{ + return surf_cpu_model->extension.cpu. + sleep(((workstation_CLM03_t) workstation)->cpu, 2); +} + +static surf_action_t ws_action_read(void *workstation, void* ptr, size_t size, size_t nmemb, surf_file_t stream) +{ + return surf_cpu_model->extension.cpu. + sleep(((workstation_CLM03_t) workstation)->cpu, 3); +} + +static surf_action_t ws_action_write(void *workstation, const void* ptr, size_t size, size_t nmemb, surf_file_t stream) +{ + return surf_cpu_model->extension.cpu. + sleep(((workstation_CLM03_t) workstation)->cpu, 4); +} + +static surf_action_t ws_action_stat(void *workstation, int fd, void* buf) +{ + return surf_cpu_model->extension.cpu. + sleep(((workstation_CLM03_t) workstation)->cpu, 5); +} + static void surf_workstation_model_init_internal(void) { surf_workstation_model = surf_model_init(); @@ -342,12 +372,17 @@ static void surf_workstation_model_init_internal(void) surf_workstation_model->extension.workstation.get_properties = ws_get_properties; + surf_workstation_model->extension.workstation.open = ws_action_open; + surf_workstation_model->extension.workstation.close = ws_action_close; + surf_workstation_model->extension.workstation.read = ws_action_read; + surf_workstation_model->extension.workstation.write = ws_action_write; + surf_workstation_model->extension.workstation.stat = ws_action_stat; } void surf_workstation_model_init_current_default(void) { surf_workstation_model_init_internal(); - //xbt_cfg_setdefault_int(_surf_cfg_set, "network/crosstraffic", 1); + xbt_cfg_setdefault_int(_surf_cfg_set, "network/crosstraffic", 1); surf_cpu_model_init_Cas01(); surf_network_model_init_LegrandVelho(); @@ -355,27 +390,6 @@ void surf_workstation_model_init_current_default(void) sg_platf_postparse_add_cb(create_workstations); } -/********************************************************************/ -/* The model used in MSG and presented at CCGrid03 */ -/********************************************************************/ -/* @InProceedings{Casanova.CLM_03, */ -/* author = {Henri Casanova and Arnaud Legrand and Loris Marchal}, */ -/* title = {Scheduling Distributed Applications: the SimGrid Simulation Framework}, */ -/* booktitle = {Proceedings of the third IEEE International Symposium on Cluster Computing and the Grid (CCGrid'03)}, */ -/* publisher = {"IEEE Computer Society Press"}, */ -/* month = {may}, */ -/* year = {2003} */ -/* } */ -void surf_workstation_model_init_CLM03(void) -{ - surf_workstation_model_init_internal(); - surf_cpu_model_init_Cas01(); - surf_network_model_init_CM02(); - - xbt_dynar_push(model_list, &surf_workstation_model); - sg_platf_postparse_add_cb(create_workstations); -} - void surf_workstation_model_init_compound() {