瀏覽代碼

pass argc/argv to application's main in simgrid mode

Samuel Thibault 12 年之前
父節點
當前提交
c7adcef51b
共有 1 個文件被更改,包括 14 次插入1 次删除
  1. 14 1
      src/core/simgrid.c

+ 14 - 1
src/core/simgrid.c

@@ -28,6 +28,17 @@
 #pragma weak starpu_main
 extern int starpu_main(int argc, char *argv[]);
 
+struct main_args {
+	int argc;
+	char **argv;
+};
+
+int do_starpu_main(int argc STARPU_ATTRIBUTE_UNUSED, char *argv[] STARPU_ATTRIBUTE_UNUSED)
+{
+	struct main_args *args = MSG_process_get_data(MSG_process_self());
+	return starpu_main(args->argc, args->argv);
+}
+
 static void bus_name(struct starpu_conf *conf, char *s, size_t size, int num)
 {
 	if (!num)
@@ -176,7 +187,9 @@ int main(int argc, char **argv)
 	int nb = xbt_dynar_length(hosts);
 	for (i = 0; i < nb; i++)
 		MSG_host_set_data(xbt_dynar_get_as(hosts, i, msg_host_t), calloc(MAX_TSD, sizeof(void*)));
-	MSG_process_create("main", &starpu_main, NULL, xbt_dynar_get_as(hosts, 0, msg_host_t));
+
+	struct main_args args = { .argc = argc, .argv = argv };
+	MSG_process_create("main", &do_starpu_main, &args, xbt_dynar_get_as(hosts, 0, msg_host_t));
 	xbt_dynar_free(&hosts);
 
 	MSG_main();