X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/063c63642a29000a011c0d6176d30eb62a4e0dca..2d16ebcee6bde01575b4cd88a853e1ac1c2532bf:/src/gras/Virtu/process.c diff --git a/src/gras/Virtu/process.c b/src/gras/Virtu/process.c index f7fb45f388..24c0f62f75 100644 --- a/src/gras/Virtu/process.c +++ b/src/gras/Virtu/process.c @@ -1,8 +1,7 @@ -/* $Id$ */ - /* 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. */ @@ -11,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" @@ -48,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); @@ -89,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(); @@ -98,16 +98,17 @@ 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; } -void *gras_libdata_by_id(int id) { - return gras_libdata_by_id_from_procdata(id,gras_procdata_get()); -} -void *gras_libdata_by_id_from_procdata(int id,gras_procdata_t *pd) { - if (xbt_set_length(pd->libdata) < xbt_dynar_length(_gras_procdata_fabrics)) { + +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)) { /* Damn, some new modules were added since procdata_init(). Amok? */ /* Get 'em all */ gras_procdata_init(); @@ -123,7 +124,6 @@ void gras_procdata_init() unsigned int cursor; - xbt_ex_t e; xbt_set_elm_t elem; if (!pd->libdata) { @@ -132,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); } @@ -187,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; }