Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
HACKHACK: set msg_global to NULL so that xbt_procname works in SG even when not using...
[simgrid.git] / src / surf / surf.c
index f1206eb..e26ec9b 100644 (file)
@@ -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);
@@ -155,6 +170,8 @@ FILE *surf_fopen(const char *name, const char *mode)
   char* path = NULL;
   FILE *file = 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);
 
@@ -196,7 +213,7 @@ void surf_finalize(void)
   tmgr_finalize();
   surf_parse_lex_destroy();
   if(path_name) {
-    xbt_free(path_name);
+    free(path_name);
     path_name = NULL;
   }
 }