about summary refs log tree commit diff
path: root/src/rt/rust_kernel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt/rust_kernel.cpp')
-rw-r--r--src/rt/rust_kernel.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/rt/rust_kernel.cpp b/src/rt/rust_kernel.cpp
new file mode 100644
index 00000000000..b82e46152fa
--- /dev/null
+++ b/src/rt/rust_kernel.cpp
@@ -0,0 +1,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);
+    }
+}