about summary refs log tree commit diff
path: root/src/rt/rust_kernel.cpp
blob: b82e46152fa1ef78f7453560d7756d07646b79c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "rust_internal.h"

rust_kernel::rust_kernel(rust_srv *srv) :
    _region(srv->local_region),
    _log(srv, NULL),
    domains(srv->local_region),
    message_queues(srv->local_region) {
    // Nop.
}

rust_kernel::~rust_kernel() {
    // Nop.
}

void
rust_kernel::register_domain(rust_dom *dom) {
    domains.append(dom);
}

void
rust_kernel::deregister_domain(rust_dom *dom) {
    domains.remove(dom);
}

void
rust_kernel::log_all_domain_state() {
    log(rust_log::KERN, "log_all_domain_state: %d domains", domains.length());
    for (uint32_t i = 0; i < domains.length(); i++) {
        domains[i]->log_state();
    }
}

void
rust_kernel::log(uint32_t type_bits, char const *fmt, ...) {
    char buf[256];
    if (_log.is_tracing(type_bits)) {
        va_list args;
        va_start(args, fmt);
        vsnprintf(buf, sizeof(buf), fmt, args);
        _log.trace_ln(NULL, type_bits, buf);
        va_end(args);
    }
}