Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Move datadesc and TCP sockets from GRAS to XBT.
[simgrid.git] / src / gras / Virtu / process.c
index d016e76..24c0f62 100644 (file)
@@ -1,6 +1,7 @@
 /* process - GRAS process handling (common code for RL and SG)              */
 
-/* Copyright (c) 2003, 2004 Martin Quinson. All rights reserved.            */
+/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -9,7 +10,7 @@
 #include "xbt/sysdep.h"
 #include "xbt/log.h"
 #include "gras/transport.h"
-#include "gras/datadesc.h"
+#include "xbt/datadesc.h"
 #include "gras/messages.h"
 #include "gras_modinter.h"
 
@@ -46,8 +47,9 @@ int gras_procdata_add(const char *name, pvoid_f_void_t constructor,
 
   if (!_gras_procdata_fabrics) {
     /* create the dynar if needed */
-    _gras_procdata_fabrics = xbt_dynar_new(sizeof(s_gras_procdata_fabric_t),
-                                           gras_procdata_fabric_free);
+    _gras_procdata_fabrics =
+        xbt_dynar_new(sizeof(s_gras_procdata_fabric_t),
+                      gras_procdata_fabric_free);
   }
 
   fab = xbt_dynar_push_ptr(_gras_procdata_fabrics);
@@ -87,8 +89,8 @@ void *gras_libdata_by_name_from_procdata(const char *name,
                                          gras_procdata_t * pd)
 {
   void *res = NULL;
-  xbt_ex_t e;
-  if (xbt_set_length(pd->libdata) < xbt_dynar_length(_gras_procdata_fabrics)) {
+  if (xbt_set_length(pd->libdata) <
+      xbt_dynar_length(_gras_procdata_fabrics)) {
     /* Damn, some new modules were added since procdata_init(). Amok? */
     /* Get 'em all */
     gras_procdata_init();
@@ -96,8 +98,8 @@ void *gras_libdata_by_name_from_procdata(const char *name,
   TRY {
     res = xbt_set_get_by_name(pd->libdata, name);
   }
-  CATCH(e) {
-    RETHROW1("Cannot retrieve the libdata associated to %s: %s", name);
+  CATCH_ANONYMOUS {
+    RETHROWF("Cannot retrieve the libdata associated to %s: %s", name);
   }
   return res;
 }
@@ -105,7 +107,8 @@ void *gras_libdata_by_name_from_procdata(const char *name,
 void *gras_libdata_by_id(int id)
 {
   gras_procdata_t *pd = gras_procdata_get();
-  if (xbt_set_length(pd->libdata) < xbt_dynar_length(_gras_procdata_fabrics)) {
+  if (xbt_set_length(pd->libdata) <
+      xbt_dynar_length(_gras_procdata_fabrics)) {
     /* Damn, some new modules were added since procdata_init(). Amok? */
     /* Get 'em all */
     gras_procdata_init();
@@ -121,7 +124,6 @@ void gras_procdata_init()
 
   unsigned int cursor;
 
-  xbt_ex_t e;
   xbt_set_elm_t elem;
 
   if (!pd->libdata) {
@@ -130,38 +132,30 @@ void gras_procdata_init()
   }
 
   xbt_dynar_foreach(_gras_procdata_fabrics, cursor, fab) {
-    volatile int found = 0;
 
     if (cursor + 1 <= xbt_set_length(pd->libdata)) {
-      DEBUG2("Skip fabric %d: there is already %ld libdata",
+      XBT_DEBUG("Skip fabric %d: there is already %ld libdata",
              cursor, xbt_set_length(pd->libdata));
       continue;                 /* allow to recall this function to get recently added fabrics */
     }
-    DEBUG2("Go ahead for cursor %d, there is %ld libdata",
+    XBT_DEBUG("Go ahead for cursor %d, there is %ld libdata",
            cursor, xbt_set_length(pd->libdata));
 
-    xbt_assert1(fab.name, "Name of fabric #%d is NULL!", cursor);
-    DEBUG1("Create the procdata for %s", fab.name);
+    xbt_assert(fab.name, "Name of fabric #%d is NULL!", cursor);
+    XBT_DEBUG("Create the procdata for %s", fab.name);
     /* Check for our own errors */
-    TRY {
-      xbt_set_get_by_name(pd->libdata, fab.name);
-      found = 1;
-    }
-    CATCH(e) {
-      xbt_ex_free(e);
-      found = 0;
-    }
-    if (found)
-      THROW1(unknown_error, 0, "MayDay: two modules use '%s' as libdata name",
-             fab.name);
+
+    if (xbt_set_get_by_name_or_null(pd->libdata, fab.name) != NULL)
+      THROWF(unknown_error, 0,
+             "MayDay: two modules use '%s' as libdata name", fab.name);
 
     /* Add the data in place, after some more sanity checking */
-    elem = (*(fab.constructor)) ();
+    elem = fab.constructor();
     if (elem->name_len && elem->name_len != strlen(elem->name)) {
       elem->name_len = strlen(elem->name);
-      WARN1
-        ("Module '%s' constructor is borken: it does not set elem->name_len",
-         fab.name);
+      XBT_WARN
+          ("Module '%s' constructor is borken: it does not set elem->name_len",
+           fab.name);
     }
     xbt_set_add(pd->libdata, elem, fab.destructor);
   }
@@ -185,8 +179,7 @@ void gras_procdata_exit()
 const char *gras_os_hostport()
 {
   static char *res = NULL;
-  if (res)
-    free(res);                  /* my port may have changed */
+  free(res);                  /* my port may have changed */
   res = bprintf("%s:%d", gras_os_myname(), gras_os_myport());
   return (const char *) res;
 }