From 3654ef00782cf9708196fd438ee08c751a5b699b Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 1 Apr 2012 17:35:35 -0700 Subject: [PATCH] rt: Introduce rust_manual_sched_launcher_factory. Again, so sorry --- src/rt/rust_sched_launcher.cpp | 8 ++++++++ src/rt/rust_sched_launcher.h | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/rt/rust_sched_launcher.cpp b/src/rt/rust_sched_launcher.cpp index e1b0651cf9d..dabae31f5b6 100644 --- a/src/rt/rust_sched_launcher.cpp +++ b/src/rt/rust_sched_launcher.cpp @@ -27,3 +27,11 @@ rust_thread_sched_launcher_factory::create(rust_scheduler *sched, int id) { return new(sched->kernel, "rust_thread_sched_launcher") rust_thread_sched_launcher(sched, srv, id); } + +rust_sched_launcher * +rust_manual_sched_launcher_factory::create(rust_scheduler *sched, int id) { + assert(launcher == NULL && "I can only track one sched_launcher"); + rust_srv *srv = sched->srv->clone(); + return new(sched->kernel, "rust_manual_sched_launcher") + rust_manual_sched_launcher(sched, srv, id); +} diff --git a/src/rt/rust_sched_launcher.h b/src/rt/rust_sched_launcher.h index 7b5dc719424..a68c1f500d6 100644 --- a/src/rt/rust_sched_launcher.h +++ b/src/rt/rust_sched_launcher.h @@ -55,4 +55,14 @@ public: virtual rust_sched_launcher *create(rust_scheduler *sched, int id); }; +class rust_manual_sched_launcher_factory + : public rust_sched_launcher_factory { +private: + rust_manual_sched_launcher *launcher; +public: + rust_manual_sched_launcher_factory() : launcher(NULL) { } + virtual rust_sched_launcher *create(rust_scheduler *sched, int id); + rust_manual_sched_launcher *get_launcher() { return launcher; } +}; + #endif // RUST_SCHED_LAUNCHER_H