Skip to content

Commit 128a8b6

Browse files
committed
remove rust_srv
1 parent 413994e commit 128a8b6

19 files changed

+44
-174
lines changed

Diff for: mk/rt.mk

-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ RUNTIME_CS_$(1) := \
6464
rt/rust_port_selector.cpp \
6565
rt/circular_buffer.cpp \
6666
rt/isaac/randport.cpp \
67-
rt/rust_srv.cpp \
6867
rt/rust_kernel.cpp \
6968
rt/rust_shape.cpp \
7069
rt/rust_abi.cpp \

Diff for: src/rt/circular_buffer.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,12 @@ circular_buffer::circular_buffer(rust_kernel *kernel, size_t unit_sz) :
2424
circular_buffer::~circular_buffer() {
2525
KLOG(kernel, mem, "~circular_buffer 0x%" PRIxPTR, this);
2626
assert(_buffer);
27-
W(kernel, _unread == 0,
28-
"freeing circular_buffer with %d unread bytes", _unread);
27+
if (_unread != 0) {
28+
fprintf(stderr, "warning: freeing circular_buffer with"
29+
" %lu unread bytes", _unread);
30+
fflush(stderr);
31+
}
32+
2933
kernel->free(_buffer);
3034
}
3135

Diff for: src/rt/memory_region.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ void *memory_region::get_data(alloc_header *ptr) {
2323
return (void*)((char *)ptr + HEADER_SIZE);
2424
}
2525

26-
memory_region::memory_region(rust_srv *srv, bool synchronized) :
27-
_srv(srv), _parent(NULL), _live_allocations(0),
28-
_detailed_leaks(srv->env->detailed_leaks),
26+
memory_region::memory_region(rust_env *env, bool synchronized) :
27+
_env(env), _parent(NULL), _live_allocations(0),
28+
_detailed_leaks(env->detailed_leaks),
2929
_synchronized(synchronized) {
3030
}
3131

3232
memory_region::memory_region(memory_region *parent) :
33-
_srv(parent->_srv), _parent(parent), _live_allocations(0),
33+
_env(parent->_env), _parent(parent), _live_allocations(0),
3434
_detailed_leaks(parent->_detailed_leaks),
3535
_synchronized(parent->_synchronized) {
3636
}
@@ -59,7 +59,7 @@ void memory_region::free(void *mem) {
5959
}
6060
release_alloc(mem);
6161
maybe_poison(mem);
62-
_srv->free(alloc);
62+
::free(alloc);
6363
}
6464

6565
void *
@@ -74,7 +74,7 @@ memory_region::realloc(void *mem, size_t orig_size) {
7474
# endif
7575

7676
size_t size = orig_size + HEADER_SIZE;
77-
alloc_header *newMem = (alloc_header *)_srv->realloc(alloc, size);
77+
alloc_header *newMem = (alloc_header *)::realloc(alloc, size);
7878

7979
# if RUSTRT_TRACK_ALLOCATIONS >= 1
8080
assert(newMem->magic == MAGIC);
@@ -105,7 +105,7 @@ void *
105105
memory_region::malloc(size_t size, const char *tag, bool zero) {
106106
size_t old_size = size;
107107
size += HEADER_SIZE;
108-
alloc_header *mem = (alloc_header *)_srv->malloc(size);
108+
alloc_header *mem = (alloc_header *)::malloc(size);
109109

110110
# if RUSTRT_TRACK_ALLOCATIONS >= 1
111111
mem->magic = MAGIC;
@@ -222,7 +222,7 @@ memory_region::claim_alloc(void *mem) {
222222
void
223223
memory_region::maybe_poison(void *mem) {
224224

225-
if (!_srv->env->poison_on_free)
225+
if (!_env->poison_on_free)
226226
return;
227227

228228
# if RUSTRT_TRACK_ALLOCATIONS >= 1

Diff for: src/rt/memory_region.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
// hugely expensive and should only be used as a last resort.
2323
#define RUSTRT_TRACK_ALLOCATIONS 0
2424

25-
class rust_srv;
25+
class rust_env;
2626

2727
class memory_region {
2828
private:
@@ -42,7 +42,7 @@ class memory_region {
4242
inline alloc_header *get_header(void *mem);
4343
inline void *get_data(alloc_header *);
4444

45-
rust_srv *_srv;
45+
rust_env *_env;
4646
memory_region *_parent;
4747
int _live_allocations;
4848
array_list<alloc_header *> _allocation_list;
@@ -58,7 +58,7 @@ class memory_region {
5858
void claim_alloc(void *mem);
5959

6060
public:
61-
memory_region(rust_srv *srv, bool synchronized);
61+
memory_region(rust_env *env, bool synchronized);
6262
memory_region(memory_region *parent);
6363
void *malloc(size_t size, const char *tag, bool zero = true);
6464
void *calloc(size_t size, const char *tag);

Diff for: src/rt/rust.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) {
7575
update_log_settings(crate_map, env->logspec);
7676
check_claims = env->check_claims;
7777

78-
rust_srv *srv = new rust_srv(env);
79-
rust_kernel *kernel = new rust_kernel(srv);
78+
rust_kernel *kernel = new rust_kernel(env);
8079
rust_sched_id sched_id = kernel->create_scheduler(env->num_sched_threads);
8180
rust_scheduler *sched = kernel->get_scheduler_by_id(sched_id);
8281
rust_task *root_task = sched->create_task(NULL, "main");
@@ -96,7 +95,6 @@ rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) {
9695
int ret = kernel->wait_for_exit();
9796
delete args;
9897
delete kernel;
99-
delete srv;
10098

10199
free_env(env);
102100

Diff for: src/rt/rust_internal.h

-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ template <typename T> struct region_owned {
9595
struct rust_cond { };
9696

9797
#include "memory_region.h"
98-
#include "rust_srv.h"
9998
#include "rust_log.h"
10099
#include "rust_kernel.h"
101100
#include "rust_sched_loop.h"

Diff for: src/rt/rust_kernel.cpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,15 @@
99
#define KLOG_ERR_(field, ...) \
1010
KLOG_LVL(this, field, log_err, __VA_ARGS__)
1111

12-
rust_kernel::rust_kernel(rust_srv *srv) :
13-
_region(srv, true),
14-
_log(srv, NULL),
15-
srv(srv),
12+
rust_kernel::rust_kernel(rust_env *env) :
13+
_region(env, true),
14+
_log(env, NULL),
1615
max_task_id(0),
1716
max_port_id(0),
1817
rval(0),
1918
max_sched_id(0),
2019
sched_reaper(this),
21-
env(srv->env)
20+
env(env)
2221
{
2322
}
2423

@@ -69,7 +68,7 @@ rust_kernel::create_scheduler(size_t num_threads) {
6968
id = max_sched_id++;
7069
assert(id != INTPTR_MAX && "Hit the maximum scheduler id");
7170
sched = new (this, "rust_scheduler")
72-
rust_scheduler(this, srv, num_threads, id);
71+
rust_scheduler(this, num_threads, id);
7372
bool is_new = sched_table
7473
.insert(std::pair<rust_sched_id,
7574
rust_scheduler*>(id, sched)).second;

Diff for: src/rt/rust_kernel.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ class rust_kernel {
2222
memory_region _region;
2323
rust_log _log;
2424

25-
public:
26-
rust_srv *srv;
27-
private:
2825
// The next task id
2926
rust_task_id max_task_id;
3027

@@ -50,10 +47,9 @@ class rust_kernel {
5047
rust_sched_reaper sched_reaper;
5148

5249
public:
53-
5450
struct rust_env *env;
5551

56-
rust_kernel(rust_srv *srv);
52+
rust_kernel(rust_env *env);
5753

5854
void log(uint32_t level, char const *fmt, ...);
5955
void fatal(char const *fmt, ...);

Diff for: src/rt/rust_log.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ log_console_off(rust_env *env) {
4040
}
4141
}
4242

43-
rust_log::rust_log(rust_srv *srv, rust_sched_loop *sched_loop) :
44-
_srv(srv),
43+
rust_log::rust_log(rust_env *env, rust_sched_loop *sched_loop) :
44+
_env(env),
4545
_sched_loop(sched_loop) {
4646
}
4747

@@ -98,7 +98,8 @@ rust_log::trace_ln(char *prefix, char *message) {
9898
append_string(buffer, "%s", prefix);
9999
append_string(buffer, "%s", message);
100100
if (_log_to_console) {
101-
_srv->log(buffer);
101+
fprintf(stderr, "rust: %s\n", buffer);
102+
fflush(stderr);
102103
}
103104
_log_lock.unlock();
104105
}

Diff for: src/rt/rust_log.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ struct rust_task;
4040
class rust_log {
4141

4242
public:
43-
rust_log(rust_srv *srv, rust_sched_loop *sched_loop);
43+
rust_log(rust_env *env, rust_sched_loop *sched_loop);
4444
virtual ~rust_log();
4545

4646
void trace_ln(rust_task *task, uint32_t level, char *message);
4747
void trace_ln(char *prefix, char *message);
4848
bool is_tracing(uint32_t type_bits);
4949

5050
private:
51-
rust_srv *_srv;
51+
rust_env *_env;
5252
rust_sched_loop *_sched_loop;
5353
bool _use_labels;
5454
void trace_ln(rust_task *task, char *message);

Diff for: src/rt/rust_sched_launcher.cpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33

44
const size_t SCHED_STACK_SIZE = 1024*100;
55

6-
rust_sched_launcher::rust_sched_launcher(rust_scheduler *sched,
7-
rust_srv *srv, int id)
6+
rust_sched_launcher::rust_sched_launcher(rust_scheduler *sched, int id)
87
: kernel(sched->kernel),
9-
sched_loop(sched, srv, id),
8+
sched_loop(sched, id),
109
driver(&sched_loop) {
1110
}
1211

1312
rust_thread_sched_launcher::rust_thread_sched_launcher(rust_scheduler *sched,
14-
rust_srv *srv, int id)
15-
: rust_sched_launcher(sched, srv, id),
13+
int id)
14+
: rust_sched_launcher(sched, id),
1615
rust_thread(SCHED_STACK_SIZE) {
1716
}
1817

Diff for: src/rt/rust_sched_launcher.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class rust_sched_launcher : public kernel_owned<rust_sched_launcher> {
1616
rust_sched_driver driver;
1717

1818
public:
19-
rust_sched_launcher(rust_scheduler *sched, rust_srv *srv, int id);
19+
rust_sched_launcher(rust_scheduler *sched, int id);
2020
virtual ~rust_sched_launcher() { }
2121

2222
virtual void start() = 0;
@@ -28,7 +28,7 @@ class rust_thread_sched_launcher
2828
:public rust_sched_launcher,
2929
private rust_thread {
3030
public:
31-
rust_thread_sched_launcher(rust_scheduler *sched, rust_srv *srv, int id);
31+
rust_thread_sched_launcher(rust_scheduler *sched, int id);
3232
virtual void start() { rust_thread::start(); }
3333
virtual void run() { driver.start_main_loop(); }
3434
virtual void join() { rust_thread::join(); }

Diff for: src/rt/rust_sched_loop.cpp

+3-5
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,19 @@ const size_t C_STACK_SIZE = 1024*1024;
1717

1818
bool rust_sched_loop::tls_initialized = false;
1919

20-
rust_sched_loop::rust_sched_loop(rust_scheduler *sched,
21-
rust_srv *srv,
22-
int id) :
23-
_log(srv, this),
20+
rust_sched_loop::rust_sched_loop(rust_scheduler *sched,int id) :
21+
_log(env, this),
2422
id(id),
2523
should_exit(false),
2624
cached_c_stack(NULL),
2725
dead_task(NULL),
2826
pump_signal(NULL),
2927
kernel(sched->kernel),
3028
sched(sched),
31-
srv(srv),
3229
log_lvl(log_debug),
3330
min_stack_size(kernel->env->min_stack_size),
3431
env(kernel->env),
32+
local_region(env, false),
3533
// TODO: calculate a per scheduler name.
3634
name("main")
3735
{

Diff for: src/rt/rust_sched_loop.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ struct rust_sched_loop
6969
public:
7070
rust_kernel *kernel;
7171
rust_scheduler *sched;
72-
rust_srv *srv;
7372

7473
// NB: this is used to filter *runtime-originating* debug
7574
// logging, on a per-scheduler basis. It's not likely what
@@ -81,6 +80,7 @@ struct rust_sched_loop
8180

8281
size_t min_stack_size;
8382
rust_env *env;
83+
memory_region local_region;
8484

8585
randctx rctx;
8686

@@ -90,7 +90,7 @@ struct rust_sched_loop
9090

9191
// Only a pointer to 'name' is kept, so it must live as long as this
9292
// domain.
93-
rust_sched_loop(rust_scheduler *sched, rust_srv *srv, int id);
93+
rust_sched_loop(rust_scheduler *sched, int id);
9494
void activate(rust_task *task);
9595
void log(rust_task *task, uint32_t level, char const *fmt, ...);
9696
rust_log & get_log();

Diff for: src/rt/rust_scheduler.cpp

+1-7
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33
#include "rust_sched_launcher.h"
44

55
rust_scheduler::rust_scheduler(rust_kernel *kernel,
6-
rust_srv *srv,
76
size_t num_threads,
87
rust_sched_id id) :
98
kernel(kernel),
10-
srv(srv),
11-
env(srv->env),
129
live_threads(num_threads),
1310
live_tasks(0),
1411
num_threads(num_threads),
@@ -24,10 +21,9 @@ rust_scheduler::~rust_scheduler() {
2421

2522
rust_sched_launcher *
2623
rust_scheduler::create_task_thread(int id) {
27-
rust_srv *srv = this->srv->clone();
2824
rust_sched_launcher *thread =
2925
new (kernel, "rust_thread_sched_launcher")
30-
rust_thread_sched_launcher(this, srv, id);
26+
rust_thread_sched_launcher(this, id);
3127
KLOG(kernel, kern, "created task thread: " PTR ", id: %d",
3228
thread, id);
3329
return thread;
@@ -36,9 +32,7 @@ rust_scheduler::create_task_thread(int id) {
3632
void
3733
rust_scheduler::destroy_task_thread(rust_sched_launcher *thread) {
3834
KLOG(kernel, kern, "deleting task thread: " PTR, thread);
39-
rust_srv *srv = thread->get_loop()->srv;
4035
delete thread;
41-
delete srv;
4236
}
4337

4438
void

Diff for: src/rt/rust_scheduler.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ class rust_scheduler : public kernel_owned<rust_scheduler> {
99
// FIXME: Make these private
1010
public:
1111
rust_kernel *kernel;
12-
rust_srv *srv;
13-
rust_env *env;
1412
private:
1513
// Protects live_threads and cur_thread increments
1614
lock_and_signal lock;
@@ -34,7 +32,7 @@ class rust_scheduler : public kernel_owned<rust_scheduler> {
3432
void exit();
3533

3634
public:
37-
rust_scheduler(rust_kernel *kernel, rust_srv *srv, size_t num_threads,
35+
rust_scheduler(rust_kernel *kernel, size_t num_threads,
3836
rust_sched_id id);
3937
~rust_scheduler();
4038

0 commit comments

Comments
 (0)