From 76d7df91478f4647517054495744afcf0fa9b6fb Mon Sep 17 00:00:00 2001 From: mquinson Date: Wed, 24 Nov 2010 16:19:00 +0000 Subject: [PATCH] implement gras_agent_spawn in RL, kill the data argument out of it git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8642 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/gras/process.h | 2 +- src/gras/Virtu/rl_process.c | 22 ++++++++++++++++++++-- src/gras/Virtu/sg_process.c | 6 +++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/include/gras/process.h b/include/gras/process.h index a91114a097..cfc5fbadc2 100644 --- a/include/gras/process.h +++ b/include/gras/process.h @@ -14,7 +14,7 @@ SG_BEGIN_DECL() -void gras_agent_spawn(const char *name, void *data, xbt_main_func_t code, +void gras_agent_spawn(const char *name, xbt_main_func_t code, int argc, char *argv[], xbt_dict_t properties); diff --git a/src/gras/Virtu/rl_process.c b/src/gras/Virtu/rl_process.c index e6a6672f6a..969f97a688 100644 --- a/src/gras/Virtu/rl_process.c +++ b/src/gras/Virtu/rl_process.c @@ -9,6 +9,7 @@ #include "gras_modinter.h" /* module initialization interface */ #include "gras/Virtu/virtu_rl.h" #include "portable.h" +#include "xbt/xbt_os_thread.h" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(gras_virtu_process); @@ -93,11 +94,28 @@ gras_procdata_t *gras_procdata_get(void) return _gras_procdata; } -void gras_agent_spawn(const char *name, void *data, +typedef struct { + xbt_main_func_t code; + int argc; + char **argv; +} spawner_wrapper_args; + +static void *spawner_wrapper(void *data) { + spawner_wrapper_args *a = data; + (*(a->code))(a->argc,a->argv); + free(a); + return NULL; +} + +void gras_agent_spawn(const char *name, xbt_main_func_t code, int argc, char *argv[], xbt_dict_t properties) { - THROW_UNIMPLEMENTED; + spawner_wrapper_args *args =malloc(sizeof(spawner_wrapper_args)); + args->argc=argc; + args->argv=argv; + args->code=code; + xbt_os_thread_create(name,spawner_wrapper,args); } /* ************************************************************************** diff --git a/src/gras/Virtu/sg_process.c b/src/gras/Virtu/sg_process.c index 743734cb74..2e2ed98e57 100644 --- a/src/gras/Virtu/sg_process.c +++ b/src/gras/Virtu/sg_process.c @@ -22,13 +22,13 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(gras_virtu_process); static long int PID = 1; -void gras_agent_spawn(const char *name, void *data, +void gras_agent_spawn(const char *name, xbt_main_func_t code, int argc, char *argv[], xbt_dict_t properties) { - SIMIX_process_create(name, code, - data, gras_os_myname(), argc, argv, properties); + SIMIX_process_create(name, code, NULL, + gras_os_myname(), argc, argv, properties); } /* ************************************************************************** -- 2.20.1