Skip to content

Commit de47fcf

Browse files
committed
rt: Extract rust_thread_sched_launcher from rust_sched_launcher
1 parent a17097a commit de47fcf

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

src/rt/rust_sched_launcher.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@ const size_t SCHED_STACK_SIZE = 1024*100;
55

66
rust_sched_launcher::rust_sched_launcher(rust_scheduler *sched,
77
rust_srv *srv, int id)
8-
: rust_thread(SCHED_STACK_SIZE),
9-
kernel(sched->kernel),
8+
: kernel(sched->kernel),
109
sched_loop(sched, srv, id),
1110
driver(&sched_loop) {
1211
}
12+
13+
rust_thread_sched_launcher::rust_thread_sched_launcher(rust_scheduler *sched,
14+
rust_srv *srv, int id)
15+
: rust_sched_launcher(sched, srv, id),
16+
rust_thread(SCHED_STACK_SIZE) {
17+
}
18+

src/rt/rust_sched_launcher.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,33 @@
55
#include "sync/rust_thread.h"
66
#include "rust_sched_driver.h"
77

8-
class rust_sched_launcher
9-
: public kernel_owned<rust_sched_launcher>,
10-
private rust_thread {
8+
class rust_sched_launcher : public kernel_owned<rust_sched_launcher> {
119
public:
1210
rust_kernel *kernel;
1311

1412
private:
1513
rust_sched_loop sched_loop;
14+
15+
protected:
1616
rust_sched_driver driver;
1717

1818
public:
1919
rust_sched_launcher(rust_scheduler *sched, rust_srv *srv, int id);
2020

21-
void start() { rust_thread::start(); }
22-
void run() { driver.start_main_loop(); }
23-
void join() { rust_thread::join(); }
21+
virtual void start() = 0;
22+
virtual void run() = 0;
23+
virtual void join() = 0;
2424
rust_sched_loop *get_loop() { return &sched_loop; }
2525
};
2626

27+
class rust_thread_sched_launcher
28+
:public rust_sched_launcher,
29+
private rust_thread {
30+
public:
31+
rust_thread_sched_launcher(rust_scheduler *sched, rust_srv *srv, int id);
32+
virtual void start() { rust_thread::start(); }
33+
virtual void run() { driver.start_main_loop(); }
34+
virtual void join() { rust_thread::join(); }
35+
};
36+
2737
#endif // RUST_SCHED_LAUNCHER_H

src/rt/rust_scheduler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ rust_sched_launcher *
2626
rust_scheduler::create_task_thread(int id) {
2727
rust_srv *srv = this->srv->clone();
2828
rust_sched_launcher *thread =
29-
new (kernel, "rust_sched_launcher") rust_sched_launcher(this, srv, id);
29+
new (kernel, "rust_thread_sched_launcher")
30+
rust_thread_sched_launcher(this, srv, id);
3031
KLOG(kernel, kern, "created task thread: " PTR ", id: %d",
3132
thread, id);
3233
return thread;

0 commit comments

Comments
 (0)