Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Perf improvement: Change libdata to a set so that we can search for stuff by ID ...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 9 Sep 2005 10:34:50 +0000 (10:34 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 9 Sep 2005 10:34:50 +0000 (10:34 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1719 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/gras/Transport/sg_transport.c
src/gras/Transport/transport.c
src/gras/Transport/transport_interface.h
src/gras/Transport/transport_plugin_sg.c
src/gras/Transport/transport_private.h

index 7992390..272ac31 100644 (file)
@@ -29,7 +29,7 @@ XBT_LOG_DEFAULT_CATEGORY(transport);
 gras_socket_t gras_trp_select(double timeout) {
   
   gras_socket_t res;
-  gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_get("gras_trp");
+  gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_by_id(gras_trp_libdata_id);
   gras_trp_sg_sock_data_t *sockdata;
   gras_trp_plugin_t trp;
 
index 4b2e1be..e5684be 100644 (file)
@@ -477,6 +477,8 @@ gras_socket_t gras_socket_meas_accept(gras_socket_t peer){
 static void *gras_trp_procdata_new() {
    gras_trp_procdata_t res = xbt_new(s_gras_trp_procdata_t,1);
    
+   res->name = xbt_strdup("gras_trp");
+   res->name_len = 0;
    res->sockets   = xbt_dynar_new(sizeof(gras_socket_t*), NULL);
    
    return (void*)res;
@@ -495,13 +497,14 @@ static void gras_trp_procdata_free(void *data) {
 /*
  * Module registration
  */
+int gras_trp_libdata_id;
 void gras_trp_register() {
-   gras_procdata_add("gras_trp",gras_trp_procdata_new, gras_trp_procdata_free);
+   gras_trp_libdata_id = gras_procdata_add("gras_trp",gras_trp_procdata_new, gras_trp_procdata_free);
 }
 
 
 xbt_dynar_t 
 gras_socketset_get(void) {
    /* FIXME: KILLME */
-   return ((gras_trp_procdata_t) gras_libdata_get("gras_trp"))->sockets;
+   return ((gras_trp_procdata_t) gras_libdata_by_id(gras_trp_libdata_id))->sockets;
 }
index 5766ffd..8627e32 100644 (file)
@@ -83,10 +83,15 @@ gras_trp_plugin_get_by_name(const char *name);
  * (used by sg_process.c to cleanup the SG channel cruft)
  */
 typedef struct {
-   /* SG only elements. In RL, they are part of the OS ;) */
-   int chan;    /* Formated messages channel */
-   int measChan; /* Unformated echange channel for performance measurement*/
-   xbt_dynar_t sockets; /* all sockets known to this process */
+  /* set headers */
+  unsigned int ID;
+  char        *name;
+  unsigned int name_len;
+
+  /* SG only elements. In RL, they are part of the OS ;) */
+  int chan;    /* Formated messages channel */
+  int measChan; /* Unformated echange channel for performance measurement*/
+  xbt_dynar_t sockets; /* all sockets known to this process */
    
 } s_gras_trp_procdata_t,*gras_trp_procdata_t;
 
index 092c9b7..6998072 100644 (file)
@@ -154,7 +154,7 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self,
                               gras_socket_t sock){
 
   gras_hostdata_t *hd=(gras_hostdata_t *)MSG_host_get_data(MSG_host_self());
-  gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_get("gras_trp");
+  gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_by_id(gras_trp_libdata_id);
   gras_sg_portrec_t pr;
   gras_trp_sg_sock_data_t *data;
   int found;
@@ -275,7 +275,7 @@ void gras_trp_sg_chunk_send_raw(gras_socket_t sock,
 int gras_trp_sg_chunk_recv(gras_socket_t sock,
                            char *data,
                            unsigned long int size){
-  gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_get("gras_trp");
+  gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_by_id(gras_trp_libdata_id);
 
   m_task_t task=NULL;
   sg_task_data_t *task_data;
index 484cac4..774ed60 100644 (file)
@@ -25,6 +25,7 @@
 #include "gras/Transport/transport_interface.h" /* semi-public API */
 #include "gras/Virtu/virtu_interface.h" /* socketset_get() */
 
+extern int gras_trp_libdata_id; /* our libdata identifier */
 /**
  * s_gras_socket:
  *