From cb00befff050e69565d2862b458bbd56f20b7cd3 Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Mon, 20 Jun 2011 18:01:38 -0700 Subject: [PATCH] Added an environment variable to control how many threads to use. --- src/rt/rust.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/rt/rust.cpp b/src/rt/rust.cpp index f1666b2e7a7..62cb6fe3bf3 100644 --- a/src/rt/rust.cpp +++ b/src/rt/rust.cpp @@ -71,6 +71,19 @@ command_line_args : public dom_owned } }; +int get_num_threads() +{ + char *env = getenv("RUST_THREADS"); + if(env) { + int num = atoi(env); + if(num > 0) + return num; + } + // TODO: in this case, determine the number of CPUs present on the + // machine. + return 1; +} + /** * Main entry point into the Rust runtime. Here we create a Rust service, * initialize the kernel, create the root domain and run it. @@ -95,7 +108,11 @@ rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) { dom->root_task->start(main_fn, (uintptr_t)args->args); - int ret = dom->start_main_loops(8); + int num_threads = get_num_threads(); + + DLOG(dom, dom, "Using %d worker threads.", num_threads); + + int ret = dom->start_main_loops(num_threads); delete args; kernel->destroy_domain(dom); kernel->join_all_domains();