From 7f85c01fa01dfbf9b06f6e8c1fa01e34f49647db Mon Sep 17 00:00:00 2001 From: donassbr Date: Fri, 23 Mar 2007 11:26:22 +0000 Subject: [PATCH] Necessity to change the code to implement MSG.. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3342 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/include/simix/datatypes.h | 14 ++++++++------ src/include/simix/simix.h | 1 + src/simix/private.h | 13 ++++++------- src/simix/smx_action.c | 29 +++++++++++++++++------------ src/simix/smx_global.c | 10 +++++----- src/simix/smx_host.c | 4 ++-- src/simix/smx_process.c | 8 ++++---- src/simix/smx_synchro.c | 2 +- 8 files changed, 44 insertions(+), 37 deletions(-) diff --git a/src/include/simix/datatypes.h b/src/include/simix/datatypes.h index abaaf31dd6..d6a59cfe43 100644 --- a/src/include/simix/datatypes.h +++ b/src/include/simix/datatypes.h @@ -17,12 +17,12 @@ SG_BEGIN_DECL() /** @defgroup m_datatypes_management_details Details on SIMIX datatypes @ingroup m_datatypes_management*/ -typedef struct s_simdata_host *simdata_host_t; +typedef struct s_smx_simdata_host *smx_simdata_host_t; /** @brief Host datatype @ingroup m_datatypes_management_details */ typedef struct s_smx_host { char *name; /**< @brief host name if any */ - simdata_host_t simdata; /**< @brief simulator data */ + smx_simdata_host_t simdata; /**< @brief simulator data */ void *data; /**< @brief user data */ } s_smx_host_t; /** @brief Host datatype @@ -48,12 +48,14 @@ typedef struct s_smx_cond *smx_cond_t; /********************************** Action *************************************/ -typedef struct s_simdata_action *simdata_action_t; +typedef struct s_smx_simdata_action *smx_simdata_action_t; /** @brief Action datatype @ingroup m_datatypes_management_details */ typedef struct s_smx_action { char *name; /**< @brief action name if any */ - simdata_action_t simdata; /**< @brief simulator data */ + smx_simdata_action_t simdata; /**< @brief simulator data */ + xbt_fifo_t cond_list; /*< conditional variables that must be signaled when the action finish. */ + void *data; /**< @brief user data */ } s_smx_action_t; @@ -61,12 +63,12 @@ typedef struct s_smx_action *smx_action_t; /* ****************************** Process *********************************** */ -typedef struct s_simdata_process *simdata_process_t; +typedef struct s_smx_simdata_process *smx_simdata_process_t; /** @brief Process datatype @ingroup m_datatypes_management_details @{ */ typedef struct s_smx_process { char *name; /**< @brief process name if any */ - simdata_process_t simdata; /**< @brief simulator data */ + smx_simdata_process_t simdata; /**< @brief simulator data */ s_xbt_swag_hookup_t process_hookup; s_xbt_swag_hookup_t synchro_hookup; s_xbt_swag_hookup_t host_proc_hookup; diff --git a/src/include/simix/simix.h b/src/include/simix/simix.h index 04a8816bd4..d5effc7431 100644 --- a/src/include/simix/simix.h +++ b/src/include/simix/simix.h @@ -105,6 +105,7 @@ XBT_PUBLIC(void) SIMIX_action_cancel(smx_action_t action); XBT_PUBLIC(void) SIMIX_action_set_priority(smx_action_t action, double priority); XBT_PUBLIC(void) SIMIX_action_destroy(smx_action_t action); XBT_PUBLIC(void) SIMIX_register_action_to_condition(smx_action_t action, smx_cond_t cond); +XBT_PUBLIC(double) SIMIX_action_get_remains(smx_action_t action); /*Not implemented yet */ XBT_PUBLIC(smx_action_t) SIMIX_action_parallel_execute(int workstation_nb, diff --git a/src/simix/private.h b/src/simix/private.h index 630a5b0045..0018fd3288 100644 --- a/src/simix/private.h +++ b/src/simix/private.h @@ -22,10 +22,10 @@ /********************************** Host ************************************/ -typedef struct s_simdata_host { +typedef struct s_smx_simdata_host { void *host; /* SURF modeling */ xbt_swag_t process_list; -} s_simdata_host_t; +} s_smx_simdata_host_t; /********************************* Simix Global ******************************/ @@ -42,7 +42,7 @@ extern SIMIX_Global_t simix_global; /******************************* Process *************************************/ -typedef struct s_simdata_process { +typedef struct s_smx_simdata_process { smx_host_t host; /* the host on which the process is running */ xbt_context_t context; /* the context that executes the scheduler fonction */ int blocked; @@ -51,7 +51,7 @@ typedef struct s_simdata_process { smx_cond_t cond; /* cond on which the process is blocked */ int argc; /* arguments number if any */ char **argv; /* arguments table if any */ -} s_simdata_process_t; +} s_smx_simdata_process_t; typedef struct process_arg { const char *name; @@ -80,13 +80,12 @@ typedef struct s_smx_cond { /********************************* Action **************************************/ -typedef struct s_simdata_action { +typedef struct s_smx_simdata_action { surf_action_t surf_action; /* SURF modeling of computation */ - xbt_fifo_t cond_list; /* conditional variables that must be signaled when the action finish. */ smx_host_t source; -} s_simdata_action_t; +} s_smx_simdata_action_t; diff --git a/src/simix/smx_action.c b/src/simix/smx_action.c index 0854c393e8..98e015a970 100644 --- a/src/simix/smx_action.c +++ b/src/simix/smx_action.c @@ -27,9 +27,9 @@ smx_action_t SIMIX_action_communicate(smx_host_t sender,smx_host_t receiver,char /* alloc structures */ smx_action_t act = xbt_new0(s_smx_action_t,1); - act->simdata = xbt_new0(s_simdata_action_t,1); - simdata_action_t simdata = act->simdata; - simdata->cond_list = xbt_fifo_new(); + act->simdata = xbt_new0(s_smx_simdata_action_t,1); + smx_simdata_action_t simdata = act->simdata; + act->cond_list = xbt_fifo_new(); /* initialize them */ act->name = xbt_strdup(name); @@ -52,9 +52,9 @@ smx_action_t SIMIX_action_execute(smx_host_t host, char * name, double amount) /* alloc structures */ smx_action_t act = xbt_new0(s_smx_action_t,1); - act->simdata = xbt_new0(s_simdata_action_t,1); - simdata_action_t simdata = act->simdata; - simdata->cond_list = xbt_fifo_new(); + act->simdata = xbt_new0(s_smx_simdata_action_t,1); + smx_simdata_action_t simdata = act->simdata; + act->cond_list = xbt_fifo_new(); /* initialize them */ simdata->source = host; @@ -81,9 +81,9 @@ smx_action_t SIMIX_action_sleep(smx_host_t host, double duration) /* alloc structures */ smx_action_t act = xbt_new0(s_smx_action_t,1); - act->simdata = xbt_new0(s_simdata_action_t,1); - simdata_action_t simdata = act->simdata; - simdata->cond_list = xbt_fifo_new(); + act->simdata = xbt_new0(s_smx_simdata_action_t,1); + smx_simdata_action_t simdata = act->simdata; + act->cond_list = xbt_fifo_new(); /* initialize them */ simdata->source = host; @@ -122,12 +122,12 @@ void SIMIX_action_destroy(smx_action_t action) xbt_assert0((action != NULL), "Invalid parameter"); - xbt_assert1((xbt_fifo_size(action->simdata->cond_list)==0), - "Conditional list not empty %d. There is a problem. Cannot destroy it now!", xbt_fifo_size(action->simdata->cond_list)); + xbt_assert1((xbt_fifo_size(action->cond_list)==0), + "Conditional list not empty %d. There is a problem. Cannot destroy it now!", xbt_fifo_size(action->cond_list)); if(action->name) free(action->name); - xbt_fifo_free(action->simdata->cond_list); + xbt_fifo_free(action->cond_list); if(action->simdata->surf_action) action->simdata->surf_action->resource_type->common_public->action_free(action->simdata->surf_action); @@ -142,3 +142,8 @@ void SIMIX_register_action_to_condition(smx_action_t action, smx_cond_t cond) xbt_fifo_push(cond->actions,action); } +double SIMIX_action_get_remains(smx_action_t action) +{ + xbt_assert0((action != NULL), "Invalid parameter"); + return action->simdata->surf_action->remains; +} diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index 2b72da89a1..cbf10cc979 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -67,7 +67,7 @@ void __SIMIX_display_process_status(void) /* List the process and their state */ INFO0("SIMIX: on : ."); xbt_swag_foreach(process, simix_global->process_list) { - simdata_process_t p_simdata = (simdata_process_t) process->simdata; + smx_simdata_process_t p_simdata = (smx_simdata_process_t) process->simdata; // simdata_host_t h_simdata=(simdata_host_t)p_simdata->host->simdata; char *who; @@ -129,14 +129,14 @@ void __SIMIX_main(void) xbt_fifo_item_t _cursor; DEBUG1("** %s failed **",smx_action->name); - xbt_fifo_foreach(smx_action->simdata->cond_list,_cursor,cond,smx_cond_t) { + xbt_fifo_foreach(smx_action->cond_list,_cursor,cond,smx_cond_t) { xbt_swag_foreach(process,cond->sleeping) { DEBUG2("\t preparing to wake up %s on %s", process->name, process->simdata->host->name); } SIMIX_cond_broadcast(cond); /* remove conditional from action */ - xbt_fifo_remove(smx_action->simdata->cond_list,cond); + xbt_fifo_remove(smx_action->cond_list,cond); } } @@ -144,14 +144,14 @@ void __SIMIX_main(void) xbt_fifo_item_t _cursor; DEBUG1("** %s done **",smx_action->name); - xbt_fifo_foreach(smx_action->simdata->cond_list,_cursor,cond,smx_cond_t) { + xbt_fifo_foreach(smx_action->cond_list,_cursor,cond,smx_cond_t) { xbt_swag_foreach(process,cond->sleeping) { DEBUG2("\t preparing to wake up %s on %s", process->name, process->simdata->host->name); } SIMIX_cond_broadcast(cond); /* remove conditional from action */ - xbt_fifo_remove(smx_action->simdata->cond_list,cond); + xbt_fifo_remove(smx_action->cond_list,cond); } } } diff --git a/src/simix/smx_host.c b/src/simix/smx_host.c index 650162799d..8368560ab7 100644 --- a/src/simix/smx_host.c +++ b/src/simix/smx_host.c @@ -30,7 +30,7 @@ smx_host_t __SIMIX_host_create(const char *name, void *workstation, void *data) { - simdata_host_t simdata = xbt_new0(s_simdata_host_t,1); + smx_simdata_host_t simdata = xbt_new0(s_smx_simdata_host_t,1); smx_host_t host = xbt_new0(s_smx_host_t,1); s_smx_process_t proc; @@ -115,7 +115,7 @@ smx_host_t SIMIX_host_self(void) */ void __SIMIX_host_destroy(smx_host_t host) { - simdata_host_t simdata = NULL; + smx_simdata_host_t simdata = NULL; xbt_assert0((host != NULL), "Invalid parameters"); diff --git a/src/simix/smx_process.c b/src/simix/smx_process.c index 5a5807b1bb..2fc9a93ec0 100644 --- a/src/simix/smx_process.c +++ b/src/simix/smx_process.c @@ -77,7 +77,7 @@ smx_process_t SIMIX_process_create_with_arguments(const char *name, smx_process_code_t code, void *data, smx_host_t host, int argc, char **argv) { - simdata_process_t simdata = xbt_new0(s_simdata_process_t,1); + smx_simdata_process_t simdata = xbt_new0(s_smx_simdata_process_t,1); smx_process_t process = xbt_new0(s_smx_process_t,1); smx_process_t self = NULL; @@ -122,7 +122,7 @@ smx_process_t SIMIX_process_create_with_arguments(const char *name, void SIMIX_process_kill(smx_process_t process) { //int i; - simdata_process_t p_simdata = process->simdata; + smx_simdata_process_t p_simdata = process->simdata; //simdata_host_t h_simdata= p_simdata->host->simdata; //int _cursor; //smx_process_t proc = NULL; @@ -244,7 +244,7 @@ smx_process_t SIMIX_process_self(void) */ void SIMIX_process_suspend(smx_process_t process) { - simdata_process_t simdata = NULL; + smx_simdata_process_t simdata = NULL; xbt_assert0(((process) && (process->simdata)), "Invalid parameters"); @@ -300,7 +300,7 @@ void SIMIX_process_suspend(smx_process_t process) */ void SIMIX_process_resume(smx_process_t process) { - simdata_process_t simdata = NULL; + smx_simdata_process_t simdata = NULL; xbt_assert0(((process != NULL) && (process->simdata)), "Invalid parameters"); CHECK_HOST(); diff --git a/src/simix/smx_synchro.c b/src/simix/smx_synchro.c index c14e550ab2..b6d418b0c6 100644 --- a/src/simix/smx_synchro.c +++ b/src/simix/smx_synchro.c @@ -212,7 +212,7 @@ void SIMIX_register_condition_to_action(smx_action_t action, smx_cond_t cond) { xbt_assert0( (action != NULL) && (cond != NULL), "Invalid parameters"); - xbt_fifo_push(action->simdata->cond_list,cond); + xbt_fifo_push(action->cond_list,cond); } -- 2.20.1