-void gras_agent_spawn(const char *name, void *data,
- xbt_main_func_t code, int argc, char *argv[]) {
- THROW_UNIMPLEMENTED;
+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)
+{
+ 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, NULL);
+}
+
+/* **************************************************************************
+ * Properties
+ * **************************************************************************/
+
+const char *gras_process_property_value(const char *name)
+{
+ return xbt_dict_get_or_null(_process_properties, name);
+}
+
+xbt_dict_t gras_process_properties(void)
+{
+ return _process_properties;
+}
+
+const char *gras_os_host_property_value(const char *name)
+{
+ return xbt_dict_get_or_null(_host_properties, name);
+}
+
+xbt_dict_t gras_os_host_properties(void)
+{
+ return _host_properties;