about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-04-01 17:35:35 -0700
committerBrian Anderson <banderson@mozilla.com>2012-04-01 17:35:35 -0700
commit3654ef00782cf9708196fd438ee08c751a5b699b (patch)
tree4ca105b060484245a0862dacf1d555dd36015e79 /src
parent7c1be236a524980b65b01a327e2c55feb6295a52 (diff)
downloadrust-3654ef00782cf9708196fd438ee08c751a5b699b.tar.gz
rust-3654ef00782cf9708196fd438ee08c751a5b699b.zip
rt: Introduce rust_manual_sched_launcher_factory. Again, so sorry
Diffstat (limited to 'src')
-rw-r--r--src/rt/rust_sched_launcher.cpp8
-rw-r--r--src/rt/rust_sched_launcher.h10
2 files changed, 18 insertions, 0 deletions
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