From c48a7aa27fd845362ceb166100734cb224ec520d Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 16 May 2013 20:33:13 +0200 Subject: [PATCH] vancouver: Avoid busy startup synchronizations --- ports/src/vancouver/console.cc | 8 ++++++-- ports/src/vancouver/console.h | 1 + ports/src/vancouver/disk.cc | 7 +++++-- ports/src/vancouver/disk.h | 1 + ports/src/vancouver/main.cc | 6 ------ 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/ports/src/vancouver/console.cc b/ports/src/vancouver/console.cc index 9aef0e8a0..f7d9de7e7 100644 --- a/ports/src/vancouver/console.cc +++ b/ports/src/vancouver/console.cc @@ -34,7 +34,6 @@ extern char _binary_mono_tff_start; Font default_font(&_binary_mono_tff_start); extern Genode::Lock global_lock; -extern bool console_init; using Genode::env; using Genode::Dataspace_client; @@ -195,7 +194,8 @@ void Vancouver_console::entry() unsigned unchanged = 0; bool cmp_even = 1; - console_init = true; + _startup_lock.unlock(); + while (1) { while (!input.is_pending()) { @@ -304,8 +304,12 @@ void Vancouver_console::entry() Vancouver_console::Vancouver_console(Motherboard &mb, Genode::size_t vm_fb_size, Genode::Dataspace_capability fb_ds) : + _startup_lock(Genode::Lock::LOCKED), _vm_fb_size(vm_fb_size), _mb(mb), _fb_size(0), _pixels(0), _guest_fb(0), _regs(0), _fb_ds(fb_ds) { start(); + + /* shake hands with console thread */ + _startup_lock.lock(); } diff --git a/ports/src/vancouver/console.h b/ports/src/vancouver/console.h index a9e2a4363..a44259fb3 100644 --- a/ports/src/vancouver/console.h +++ b/ports/src/vancouver/console.h @@ -46,6 +46,7 @@ class Vancouver_console : public Thread<8192>, public StaticReceiver); - disk_init = true; + _startup_lock.unlock(); } diff --git a/ports/src/vancouver/disk.h b/ports/src/vancouver/disk.h index 348759936..5563b0d94 100644 --- a/ports/src/vancouver/disk.h +++ b/ports/src/vancouver/disk.h @@ -48,6 +48,7 @@ class Vancouver_disk : public Genode::Thread<8192>, public StaticReceiverxml_node().sub_node("machine")); Genode::printf("\n--- Booting VM ---\n");