Skip to content

Commit 3654ef0

Browse files
committed
rt: Introduce rust_manual_sched_launcher_factory. Again, so sorry
1 parent 7c1be23 commit 3654ef0

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/rt/rust_sched_launcher.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,11 @@ rust_thread_sched_launcher_factory::create(rust_scheduler *sched, int id) {
2727
return new(sched->kernel, "rust_thread_sched_launcher")
2828
rust_thread_sched_launcher(sched, srv, id);
2929
}
30+
31+
rust_sched_launcher *
32+
rust_manual_sched_launcher_factory::create(rust_scheduler *sched, int id) {
33+
assert(launcher == NULL && "I can only track one sched_launcher");
34+
rust_srv *srv = sched->srv->clone();
35+
return new(sched->kernel, "rust_manual_sched_launcher")
36+
rust_manual_sched_launcher(sched, srv, id);
37+
}

src/rt/rust_sched_launcher.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,14 @@ class rust_thread_sched_launcher_factory
5555
virtual rust_sched_launcher *create(rust_scheduler *sched, int id);
5656
};
5757

58+
class rust_manual_sched_launcher_factory
59+
: public rust_sched_launcher_factory {
60+
private:
61+
rust_manual_sched_launcher *launcher;
62+
public:
63+
rust_manual_sched_launcher_factory() : launcher(NULL) { }
64+
virtual rust_sched_launcher *create(rust_scheduler *sched, int id);
65+
rust_manual_sched_launcher *get_launcher() { return launcher; }
66+
};
67+
5868
#endif // RUST_SCHED_LAUNCHER_H

0 commit comments

Comments
 (0)