From: mquinson Date: Fri, 2 Jun 2006 00:09:53 +0000 (+0000) Subject: Allow to retrieve the libdata of a remote host in SG X-Git-Tag: v3.3~3011 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/42899c56484678345296504a65de123846148658 Allow to retrieve the libdata of a remote host in SG git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2347 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/gras/Virtu/process.c b/src/gras/Virtu/process.c index 1f03f73833..98c64813ac 100644 --- a/src/gras/Virtu/process.c +++ b/src/gras/Virtu/process.c @@ -73,6 +73,11 @@ void gras_userdata_set(void *ud) { void *gras_libdata_by_name(const char *name) { gras_procdata_t *pd=gras_procdata_get(); + return gras_libdata_by_name_from_procdata(name,pd); +} + +/* this function is splitted from previous to allow SG to get libdata from remote hosts */ +void *gras_libdata_by_name_from_procdata(const char*name, gras_procdata_t* pd) { void *res=NULL; xbt_ex_t e; diff --git a/src/gras/Virtu/sg_process.c b/src/gras/Virtu/sg_process.c index 4d1d907dcb..ea013670d4 100644 --- a/src/gras/Virtu/sg_process.c +++ b/src/gras/Virtu/sg_process.c @@ -15,6 +15,8 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(gras_virtu_process); + + void gras_process_init() { gras_hostdata_t *hd=(gras_hostdata_t *)MSG_host_get_data(MSG_host_self()); @@ -131,7 +133,17 @@ gras_procdata_t *gras_procdata_get(void) { return pd; } +void * +gras_libdata_by_name_from_remote(const char *name, m_process_t p) { + gras_procdata_t *pd= + (gras_procdata_t *)MSG_process_get_data(p); + xbt_assert2(pd,"process '%s' on '%s' didn't run gras_process_init! (ie, gras_init)", + MSG_process_get_name(p),MSG_host_get_name(MSG_process_get_host(p))); + + return gras_libdata_by_name_from_procdata(name, pd); +} + const char* xbt_procname(void) { const char *res = NULL; m_process_t process = MSG_process_self(); diff --git a/src/gras/Virtu/virtu_private.h b/src/gras/Virtu/virtu_private.h index b44246a0b3..3787436c1e 100644 --- a/src/gras/Virtu/virtu_private.h +++ b/src/gras/Virtu/virtu_private.h @@ -26,5 +26,7 @@ typedef struct { } gras_procdata_t; gras_procdata_t *gras_procdata_get(void); - +void *gras_libdata_by_name_from_procdata(const char *name, gras_procdata_t* pd); + + #endif /* GRAS_VIRTU_PRIVATE_H */ diff --git a/src/gras/Virtu/virtu_sg.h b/src/gras/Virtu/virtu_sg.h index 8bbc96826c..25f0854fce 100644 --- a/src/gras/Virtu/virtu_sg.h +++ b/src/gras/Virtu/virtu_sg.h @@ -40,4 +40,13 @@ typedef struct { } gras_trp_sg_sock_data_t; +void *gras_libdata_by_name_from_remote(const char *name, m_process_t p); +/* The same function by id would be really dangerous. + * + * Indeed, it would rely on the fact that all process register libdatas in + * the same order, which is wrong if they init amok modules in different + * order. + */ + + #endif /* VIRTU_SG_H */