base: extend emergency dataspace size

The emergency dataspace is used to accommodate the corner case where
a signal context capability is created while issuing the first
resource request. Normally, the attempt to upgrade the signal-session
quota under such a constrained situation would fail. By freeing the
emergency dataspace in this situation, we regain enough quota to
upgrade the signal session.

This is a follow up commit for "base: Raise RAM quota of signal session
to 16K" and fixes the resource_request test on 64-bit platforms.
This commit is contained in:
Norman Feske 2015-04-02 11:26:27 +02:00 committed by Christian Helmuth
parent eaac3cc1bd
commit ea9c2199e8
4 changed files with 6 additions and 2 deletions

View File

@ -412,7 +412,7 @@ namespace Genode {
*
* See the comment of '_fallback_sig_cap()' in 'env/env.cc'.
*/
constexpr static size_t _emergency_ram_size() { return 4*1024; }
constexpr static size_t _emergency_ram_size() { return 8*1024; }
Ram_dataspace_capability _emergency_ram_ds;

View File

@ -97,7 +97,7 @@ class Genode::Platform_env : public Genode::Env, public Emergency_ram_reserve
*
* See the comment of '_fallback_sig_cap()' in 'env/env.cc'.
*/
constexpr static size_t _emergency_ram_size() { return 4*1024; }
constexpr static size_t _emergency_ram_size() { return 8*1024; }
Ram_dataspace_capability _emergency_ram_ds;
public:

View File

@ -230,6 +230,7 @@ void Signal_context::submit(unsigned num)
Signal_connection * Signal_transmitter::connection() { return signal_connection(); }
/*********************
** Signal receiver **
*********************/

View File

@ -67,6 +67,9 @@ int main(int argc, char **argv)
* successively upgrade the session. At one point, we will run out of our
* initial quota. Now, before we can issue another upgrade, we first need
* to request additional resources.
*
* Note that the construction of the signal receiver will consume a part
* of the quota we preserved as 'KEEP_QUOTA'.
*/
printf("\n-- draining signal session --\n");
{