X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f787351e3355ab558d4f491bc52bef2012eaa3e8..32e043cb47a2c23cd2b419c037d56f8139d51765:/src/gras/Transport/transport_interface.h diff --git a/src/gras/Transport/transport_interface.h b/src/gras/Transport/transport_interface.h index fc60058f96..281a9c15ae 100644 --- a/src/gras/Transport/transport_interface.h +++ b/src/gras/Transport/transport_interface.h @@ -13,6 +13,8 @@ #define GRAS_TRP_INTERFACE_H #include "portable.h" /* sometimes needed for fd_set */ +#include "simix/simix.h" +#include "xbt/queue.h" /*** *** Options @@ -23,15 +25,16 @@ extern int gras_opt_trp_nomoredata_on_close; *** Main user functions ***/ /* stable if we know the storage will keep as is until the next trp_flush */ -XBT_PUBLIC void gras_trp_send(gras_socket_t sd, char *data, long int size, int stable); -XBT_PUBLIC void gras_trp_recv(gras_socket_t sd, char *data, long int size); -XBT_PUBLIC void gras_trp_flush(gras_socket_t sd); +XBT_PUBLIC(void) gras_trp_send(gras_socket_t sd, char *data, long int size, + int stable); +XBT_PUBLIC(void) gras_trp_recv(gras_socket_t sd, char *data, long int size); +XBT_PUBLIC(void) gras_trp_flush(gras_socket_t sd); /* Find which socket needs to be read next */ -XBT_PUBLIC gras_socket_t gras_trp_select(double timeout); +XBT_PUBLIC(gras_socket_t) gras_trp_select(double timeout); /* Set the peer process name (used by messaging layer) */ -XBT_PUBLIC void gras_socket_peer_proc_set(gras_socket_t sock,char*peer_proc); +XBT_PUBLIC(void) gras_socket_peer_proc_set(gras_socket_t sock,char*peer_proc); /*** *** Plugin mechanism @@ -80,12 +83,14 @@ struct gras_trp_plugin_ { void *data; /* plugin-specific data */ - /* exit is responsible for freeing data and telling the OS this plugin goes */ - /* exit=NULL, data gets freed. (ie exit function needed only when data contains pointers) */ + /* exit is responsible for freeing data and telling to the OS that + this plugin is gone */ + /* exit=NULL, data gets brutally free()d by the generic interface. + (ie exit function needed only when data contains pointers) */ void (*exit)(gras_trp_plugin_t); }; -XBT_PUBLIC gras_trp_plugin_t +XBT_PUBLIC(gras_trp_plugin_t) gras_trp_plugin_get_by_name(const char *name); /* Data of this module specific to each process @@ -97,17 +102,19 @@ typedef struct { char *name; unsigned int name_len; - xbt_dynar_t sockets; /* all sockets known to this process */ int myport; /* Port on which I listen myself */ - fd_set *fdset; + + xbt_dynar_t sockets; /* all sockets known to this process */ /* SG only elements. In RL, they are part of the OS ;) */ - int chan; /* Formated messages channel */ - int measChan; /* Unformated echange channel for performance measurement*/ + /* List of sockets ready to be select()ed */ + xbt_queue_t msg_selectable_sockets; /* regular sockets */ + xbt_queue_t meas_selectable_sockets;/* measurement ones */ + } s_gras_trp_procdata_t,*gras_trp_procdata_t; /* Display the content of our socket set (debugging purpose) */ -XBT_PUBLIC void gras_trp_socketset_dump(const char *name); +XBT_PUBLIC(void) gras_trp_socketset_dump(const char *name); #endif /* GRAS_TRP_INTERFACE_H */