From 7cd340efbc715f664696ac58ff38a072f1b6b2fe Mon Sep 17 00:00:00 2001 From: navarro Date: Fri, 30 Mar 2012 13:26:49 +0200 Subject: [PATCH 1/1] Return result on SIMIX_post_io --- src/include/surf/surf.h | 1 - src/simix/smx_io.c | 32 ++++++++++++++++++++++++++------ src/surf/storage.c | 2 -- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 113e3b2a81..d5c7855ea6 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -94,7 +94,6 @@ typedef struct surf_action { char *category; /**< tracing category for categorized resource utilization monitoring */ #endif surf_file_t file; /**< surf_file_t for storage model */ - size_t read_write; } s_surf_action_t; typedef struct surf_action_lmm { diff --git a/src/simix/smx_io.c b/src/simix/smx_io.c index 232982e12b..040495e553 100644 --- a/src/simix/smx_io.c +++ b/src/simix/smx_io.c @@ -25,7 +25,6 @@ void SIMIX_pre_file_read(smx_simcall_t simcall) simcall->file_read.stream); xbt_fifo_push(action->simcalls, simcall); simcall->issuer->waiting_action = action; - simcall->file_read.result = (action->io.surf_io)->read_write; } smx_action_t SIMIX_file_read(smx_process_t process, const char* storage, void* ptr, size_t size, size_t nmemb, smx_file_t stream) @@ -67,7 +66,6 @@ void SIMIX_pre_file_write(smx_simcall_t simcall) simcall->file_write.stream); xbt_fifo_push(action->simcalls, simcall); simcall->issuer->waiting_action = action; - simcall->file_write.result = (action->io.surf_io)->read_write; } smx_action_t SIMIX_file_write(smx_process_t process, const char* storage, const void* ptr, size_t size, size_t nmemb, smx_file_t stream) @@ -107,8 +105,6 @@ void SIMIX_pre_file_open(smx_simcall_t simcall) simcall->file_open.mode); xbt_fifo_push(action->simcalls, simcall); simcall->issuer->waiting_action = action; - simcall->file_open.result = xbt_new(s_smx_file_t,1); /* FIXME */ - simcall->file_open.result->surf_file = (action->io.surf_io)->file; } smx_action_t SIMIX_file_open(smx_process_t process ,const char* storage, const char* path, const char* mode) @@ -147,7 +143,6 @@ void SIMIX_pre_file_close(smx_simcall_t simcall) simcall->file_close.fp); xbt_fifo_push(action->simcalls, simcall); simcall->issuer->waiting_action = action; - simcall->file_close.result = 0; } smx_action_t SIMIX_file_close(smx_process_t process ,const char* storage, smx_file_t fp) @@ -187,7 +182,6 @@ void SIMIX_pre_file_stat(smx_simcall_t simcall) simcall->file_stat.buf); xbt_fifo_push(action->simcalls, simcall); simcall->issuer->waiting_action = action; - simcall->file_stat.result = 0; } smx_action_t SIMIX_file_stat(smx_process_t process ,const char* storage, int fd, void* buf) @@ -220,6 +214,32 @@ smx_action_t SIMIX_file_stat(smx_process_t process ,const char* storage, int fd, void SIMIX_post_io(smx_action_t action) { + xbt_fifo_item_t i; + smx_simcall_t simcall; + + xbt_fifo_foreach(action->simcalls,i,simcall,smx_simcall_t) { + switch (simcall->call) { + case SIMCALL_FILE_OPEN: + simcall->file_open.result = xbt_new(s_smx_file_t,1); + simcall->file_open.result->surf_file = (action->io.surf_io)->file; + break; + case SIMCALL_FILE_CLOSE: + simcall->file_read.result = 0; + break; + case SIMCALL_FILE_WRITE: + simcall->file_write.result = (action->io.surf_io)->cost; + break; + case SIMCALL_FILE_READ: + simcall->file_read.result = (action->io.surf_io)->cost; + break; + case SIMCALL_FILE_STAT: + simcall->file_read.result = 0; + break; + default: + break; + } + } + switch (surf_workstation_model->action_state_get(action->io.surf_io)) { case SURF_ACTION_FAILED: diff --git a/src/surf/storage.c b/src/surf/storage.c index 772423f6e2..a0c00cc733 100644 --- a/src/surf/storage.c +++ b/src/surf/storage.c @@ -87,7 +87,6 @@ static surf_action_t storage_action_read(void *storage, void* ptr, size_t size, if(size > content->size) size = content->size; surf_action_t action = storage_action_execute(storage,size,READ); - action->read_write = size; return action; } @@ -98,7 +97,6 @@ static surf_action_t storage_action_write(void *storage, const void* ptr, size_t XBT_DEBUG("\tWrite file '%s' size '%Zu/%Zu'",filename,size,content->size); surf_action_t action = storage_action_execute(storage,size,WRITE); - action->read_write = size; content->size += size; return action; } -- 2.20.1