diff options
| author | Eric Holk <eholk@mozilla.com> | 2011-06-24 15:56:12 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2011-06-28 16:12:33 -0700 |
| commit | c6d83248301b4aed366b9bef682d200381324c01 (patch) | |
| tree | 12d0f6b3abed022825454c21d6fdfb60e81492f3 /src/rt/rust_kernel.cpp | |
| parent | 1c852ac9c0d14b38bc956e3938256273980577b7 (diff) | |
| download | rust-c6d83248301b4aed366b9bef682d200381324c01.tar.gz rust-c6d83248301b4aed366b9bef682d200381324c01.zip | |
There is only one domain per kernel now.
Diffstat (limited to 'src/rt/rust_kernel.cpp')
| -rw-r--r-- | src/rt/rust_kernel.cpp | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/src/rt/rust_kernel.cpp b/src/rt/rust_kernel.cpp index f72da483c35..9af5f9e2b41 100644 --- a/src/rt/rust_kernel.cpp +++ b/src/rt/rust_kernel.cpp @@ -11,11 +11,12 @@ rust_kernel::rust_kernel(rust_srv *srv) : _region(&srv->local_region), _log(srv, NULL), _srv(srv), - _interrupt_kernel_loop(FALSE) { - // Nop. + _interrupt_kernel_loop(FALSE) +{ + dom = create_domain("main"); } -rust_handle<rust_dom> * +rust_dom * rust_kernel::create_domain(const char *name) { _kernel_lock.lock(); rust_message_queue *message_queue = @@ -25,21 +26,19 @@ rust_kernel::create_domain(const char *name) { new (this) rust_dom(this, message_queue, srv, name); rust_handle<rust_dom> *handle = internal_get_dom_handle(dom); message_queue->associate(handle); - domains.append(dom); message_queues.append(message_queue); - KLOG("created domain: " PTR ", name: %s, index: %d, domains %d", - dom, name, dom->list_index, domains.length()); + KLOG("created domain: " PTR ", name: %s, index: %d", + dom, name, dom->list_index); _kernel_lock.signal_all(); _kernel_lock.unlock(); - return handle; + return dom; } void -rust_kernel::destroy_domain(rust_dom *dom) { +rust_kernel::destroy_domain() { _kernel_lock.lock(); - KLOG("deleting domain: " PTR ", name: %s, index: %d, domains %d", - dom, dom->name, dom->list_index, domains.length()); - domains.remove(dom); + KLOG("deleting domain: " PTR ", name: %s, index: %d", + dom, dom->name, dom->list_index); dom->message_queue->disassociate(); rust_srv *srv = dom->srv; delete dom; @@ -97,21 +96,9 @@ rust_kernel::get_port_handle(rust_port *port) { } void -rust_kernel::join_all_domains() { - _kernel_lock.lock(); - while (domains.length() > 0) { - _kernel_lock.wait(); - } - _kernel_lock.unlock(); - KLOG("joined domains"); -} - -void rust_kernel::log_all_domain_state() { - KLOG("log_all_domain_state: %d domains", domains.length()); - for (uint32_t i = 0; i < domains.length(); i++) { - domains[i]->log_state(); - } + KLOG("log_all_domain_state"); + dom->log_state(); } /** @@ -172,9 +159,7 @@ rust_kernel::terminate_kernel_loop() { } rust_kernel::~rust_kernel() { - K(_srv, domains.length() == 0, - "Kernel has %d live domain(s), join all domains before killing " - "the kernel.", domains.length()); + destroy_domain(); terminate_kernel_loop(); |
