X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/05898e1bb90bb5120653b524b08f296edec37a0e..973dff599bf52fd0c48e5186226355e9819e1236:/src/surf/surf.c?ds=sidebyside diff --git a/src/surf/surf.c b/src/surf/surf.c index 171b66a48a..e26ec9b66b 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -20,14 +20,22 @@ lmm_system_t maxmin_system = NULL; xbt_dynar_t surf_path = NULL; double generic_maxmin_share_resources(xbt_swag_t running_actions, - size_t offset) + size_t offset) +{ + return generic_maxmin_share_resources2(running_actions, offset, + maxmin_system); +} + +double generic_maxmin_share_resources2(xbt_swag_t running_actions, + size_t offset, + lmm_system_t sys) { surf_action_t action = NULL; double min = -1; double value = -1; #define VARIABLE(action) (*((lmm_variable_t*)(((char *) (action)) + (offset)))) - lmm_solve(maxmin_system); + lmm_solve(sys); xbt_swag_foreach(action, running_actions) { value = lmm_variable_getvalue(VARIABLE(action)); @@ -81,7 +89,7 @@ e_surf_action_state_t surf_action_get_state(surf_action_t action) void surf_action_free(surf_action_t * action) { (*action)->resource_type->common_public->action_cancel(*action); - xbt_free(*action); + free(*action); *action = NULL; } @@ -114,12 +122,19 @@ void surf_action_set_data(surf_action_t action, action->data=data; } +/* HACKHACK: msg_global must be set to a sensible value (like NULL) to use the logging mecanisme + * since log_default_appender use xbt_procname which, in SG, is defined in src/msg/m_process.c + * (in RL, xbt_procname is defined in src/gras/Virtu/rl_process.c) + */ +extern void *msg_global; + void surf_init(int *argc, char **argv) { int i,j; char *opt; xbt_init(argc, argv); + msg_global=NULL; /* see HACKHACK note above */ if (!surf_path) { const char *initial_path = "./"; surf_path = xbt_dynar_new(sizeof(char*), NULL); @@ -148,12 +163,14 @@ void surf_init(int *argc, char **argv) maxmin_system = lmm_system_new(); } +static char* path_name = NULL; FILE *surf_fopen(const char *name, const char *mode) { int i; char* path = NULL; FILE *file = NULL; - static char* path_name = NULL; + + xbt_assert1((name!=NULL), "Need a real file name, not \"%s\"\n",name); xbt_assert0(surf_path,"surf_init has to be called before using surf_fopen"); if(!path_name) path_name=xbt_new0(char,strlen(name)+1); @@ -190,8 +207,15 @@ void surf_finalize(void) if (resource_list) xbt_dynar_free(&resource_list); + if(surf_path) + xbt_dynar_free(&surf_path); + tmgr_finalize(); surf_parse_lex_destroy(); + if(path_name) { + free(path_name); + path_name = NULL; + } } double surf_solve(void)