From 68e755b1c26db09cf8e121bbbea2075f6116e279 Mon Sep 17 00:00:00 2001 From: Philipp Brüschweiler Date: Fri, 14 Sep 2012 15:01:17 +0200 Subject: core: Allocate threads on demand, not on scheduler startup API change: rust_kernel::create_scheduler() or rust_scheduler::rust_scheduler() respecitevly now take ownership of the launch factory argument, it is needed to create new threads on demand. Also renames rustrt::sched_threads() to rustrt::rust_sched_threads() for consistency. Added rustrt::rust_max_sched_threads() to return the maximal number of scheduled threads of the current scheduler. Fixes #3493. --- src/rt/rust_kernel.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/rt/rust_kernel.cpp') diff --git a/src/rt/rust_kernel.cpp b/src/rt/rust_kernel.cpp index 698ee866728..669ebd55a7c 100644 --- a/src/rt/rust_kernel.cpp +++ b/src/rt/rust_kernel.cpp @@ -31,9 +31,10 @@ rust_kernel::rust_kernel(rust_env *env) : // Create the single threaded scheduler that will run on the platform's // main thread - rust_manual_sched_launcher_factory launchfac; - osmain_scheduler = create_scheduler(&launchfac, 1, false); - osmain_driver = launchfac.get_driver(); + rust_manual_sched_launcher_factory *launchfac = + new rust_manual_sched_launcher_factory(); + osmain_scheduler = create_scheduler(launchfac, 1, false); + osmain_driver = launchfac->get_driver(); sched_reaper.start(); } @@ -79,8 +80,9 @@ void rust_kernel::free(void *mem) { rust_sched_id rust_kernel::create_scheduler(size_t num_threads) { - rust_thread_sched_launcher_factory launchfac; - return create_scheduler(&launchfac, num_threads, true); + rust_thread_sched_launcher_factory *launchfac = + new rust_thread_sched_launcher_factory(); + return create_scheduler(launchfac, num_threads, true); } rust_sched_id -- cgit 1.4.1-3-g733a5