X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/334c91befa04ae9840e7ba3a4cca0fdeb6b32957..504b4d20dd2db9ea1eaa9c4b390b2a412d7c9779:/src/gras/Virtu/sg_process.c diff --git a/src/gras/Virtu/sg_process.c b/src/gras/Virtu/sg_process.c index af417a4699..416c9d5a50 100644 --- a/src/gras/Virtu/sg_process.c +++ b/src/gras/Virtu/sg_process.c @@ -8,6 +8,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "xbt/ex.h" +#include "xbt/dict.h" #include "gras_modinter.h" /* module initialization interface */ #include "gras/Virtu/virtu_sg.h" #include "gras/Msg/msg_interface.h" /* For some checks at simulation end */ @@ -19,12 +20,12 @@ static long int PID = 1; void gras_agent_spawn(const char *name, void *data, - xbt_main_func_t code, int argc, char *argv[]) { + xbt_main_func_t code, int argc, char *argv[], xbt_dict_t properties) { SIMIX_process_create(name, code, data, gras_os_myname(), - argc, argv); + argc, argv, properties); } /* ************************************************************************** @@ -60,9 +61,9 @@ gras_process_init() { } else pd->ppid = -1; - trp_pd->msg_selectable_sockets = xbt_queue_new(1000,sizeof(gras_socket_t)); + trp_pd->msg_selectable_sockets = xbt_queue_new(0,sizeof(gras_socket_t)); - trp_pd->meas_selectable_sockets = xbt_queue_new(1000,sizeof(gras_socket_t)); + trp_pd->meas_selectable_sockets = xbt_queue_new(0,sizeof(gras_socket_t)); VERB2("Creating process '%s' (%d)", SIMIX_process_get_name(SIMIX_process_self()), @@ -136,6 +137,26 @@ gras_libdata_by_name_from_remote(const char *name, smx_process_t p) { return gras_libdata_by_name_from_procdata(name, pd); } +/** + * \brief Returns the value of a property for the current gras process + * + * \return the value of the property + */ +const char* gras_process_property_value(char* name) +{ + return xbt_dict_get_or_null(SIMIX_process_get_properties(SIMIX_process_self()), name); +} + +/** + * \brief Returns the dictionary of properties for the current gras process + * + * \return the dictionary + */ +xbt_dict_t gras_process_properties(void) +{ + return SIMIX_process_get_properties(SIMIX_process_self()); +} + /* ************************************************************************** * OS virtualization function * **************************************************************************/ @@ -161,63 +182,80 @@ int gras_os_getpid(void) { return 0; } +/** + * \brief Returns the value of a property for the current gras os + * + * \return the value of the property + */ +const char* gras_os_property_value(char* name) +{ + return xbt_dict_get_or_null(SIMIX_host_get_properties(SIMIX_process_get_host(SIMIX_process_self())), name); +} + +/** + * \brief Returns the dictionary of properties for the gras host + * + * \return the dictionary + */ +xbt_dict_t gras_os_host_properties(void) +{ + return SIMIX_host_get_properties(SIMIX_process_get_host(SIMIX_process_self())); +} + /* ************************************************************************** * Interface with SIMIX * **************************************************************************/ void gras_global_init(int *argc,char **argv) { - return SIMIX_global_init(argc,argv); + SIMIX_global_init(argc,argv); } void gras_create_environment(const char *file) { - return SIMIX_create_environment(file); + SIMIX_create_environment(file); } void gras_function_register(const char *name, xbt_main_func_t code) { - return SIMIX_function_register(name, code); + SIMIX_function_register(name, code); } -void gras_main() { - smx_cond_t cond = NULL; - smx_action_t smx_action; - xbt_fifo_t actions_done = xbt_fifo_new(); - xbt_fifo_t actions_failed = xbt_fifo_new(); - - /* Clean IO before the run */ - fflush(stdout); - fflush(stderr); - +void gras_main() { + smx_cond_t cond = NULL; + smx_action_t action; + xbt_fifo_t actions_done = xbt_fifo_new(); + xbt_fifo_t actions_failed = xbt_fifo_new(); - while (SIMIX_solve(actions_done, actions_failed) != -1.0) { - - while ( (smx_action = xbt_fifo_pop(actions_failed)) ) { - - - DEBUG1("** %s failed **",smx_action->name); - while ( (cond = xbt_fifo_pop(smx_action->cond_list)) ) { - SIMIX_cond_broadcast(cond); - } - /* action finished, destroy it */ - // SIMIX_action_destroy(smx_action); + /* Clean IO before the run */ + fflush(stdout); + fflush(stderr); + + while (SIMIX_solve(actions_done, actions_failed) != -1.0) { + while ( (action = xbt_fifo_pop(actions_failed)) ) { + DEBUG1("** %s failed **",action->name); + while ( (cond = xbt_fifo_pop(action->cond_list)) ) { + SIMIX_cond_broadcast(cond); } - - while ( (smx_action = xbt_fifo_pop(actions_done)) ) { - - DEBUG1("** %s done **",smx_action->name); - while ( (cond = xbt_fifo_pop(smx_action->cond_list)) ) { - SIMIX_cond_broadcast(cond); - } - /* action finished, destroy it */ - //SIMIX_action_destroy(smx_action); + /* action finished, destroy it */ + // SIMIX_action_destroy(action); + } + + while ( (action = xbt_fifo_pop(actions_done)) ) { + DEBUG1("** %s done **",action->name); + while ( (cond = xbt_fifo_pop(action->cond_list)) ) { + SIMIX_cond_broadcast(cond); } - } - xbt_fifo_free(actions_failed); - xbt_fifo_free(actions_done); - return; + /* action finished, destroy it */ + //SIMIX_action_destroy(action); + } + } + xbt_fifo_free(actions_failed); + xbt_fifo_free(actions_done); + return; } + void gras_launch_application(const char *file) { - return SIMIX_launch_application(file); + SIMIX_launch_application(file); } + void gras_clean() { - return SIMIX_clean(); + SIMIX_clean(); }