From f87c573695b1235555d7f3b63f96b4e3c0b9190a Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 14 Jul 2015 16:19:14 +0200 Subject: [PATCH] nova: increase default capability selector count The reference count get increase to use 2 bytes, so we need the double amount of selectors as before. Additionally print a message if we run out of capabilities in a server. Since our rpc framework is now clever enough to detect that for a printf we don't need to setup a receive window, we may use a printf instead of a die call. Eases debugging. Issue #1601 --- repos/base-nova/src/base/server/server.cc | 4 +--- repos/base-nova/src/base/thread/thread_context.cc | 2 +- repos/base-nova/src/core/platform.cc | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/repos/base-nova/src/base/server/server.cc b/repos/base-nova/src/base/server/server.cc index 9febb5cda..00f433265 100644 --- a/repos/base-nova/src/base/server/server.cc +++ b/repos/base-nova/src/base/server/server.cc @@ -159,10 +159,8 @@ void Rpc_entrypoint::_activation_entry() tmp->release(); } - /* if we can't setup receive window, die in order to recognize the issue */ if (!ep->_rcv_buf.prepare_rcv_window((Nova::Utcb *)ep->utcb())) - /* printf doesn't work here since for IPC also prepare_rcv_window is used */ - nova_die(); + PWRN("out of capability selectors for handling server requests"); srv << IPC_REPLY; } diff --git a/repos/base-nova/src/base/thread/thread_context.cc b/repos/base-nova/src/base/thread/thread_context.cc index fc5c97765..9d75d58cf 100644 --- a/repos/base-nova/src/base/thread/thread_context.cc +++ b/repos/base-nova/src/base/thread/thread_context.cc @@ -77,7 +77,7 @@ void prepare_init_main_thread() /* for Core we can't perform the following code so early */ if (!__initial_sp) { - enum { CAP_RANGES = 16 }; + enum { CAP_RANGES = 32 }; unsigned index = initial_cap_range()->base() + initial_cap_range()->elements(); diff --git a/repos/base-nova/src/core/platform.cc b/repos/base-nova/src/core/platform.cc index 949d39368..1f5500b1d 100644 --- a/repos/base-nova/src/core/platform.cc +++ b/repos/base-nova/src/core/platform.cc @@ -627,7 +627,7 @@ Platform::Platform() : /* add capability selector ranges to map */ unsigned index = 0x2000; - for (unsigned i = 0; i < 16; i++) + for (unsigned i = 0; i < 32; i++) { void * phys_ptr = 0; ram_alloc()->alloc(4096, &phys_ptr);