mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-03 16:10:59 +00:00
linux: add expanding Cpu_session_client
This commit is contained in:
parent
149356f7ab
commit
32e3eee48c
34
base-linux/src/base/env/platform_env.h
vendored
34
base-linux/src/base/env/platform_env.h
vendored
@ -293,7 +293,8 @@ namespace Genode {
|
|||||||
Expanding_ram_session_client(Ram_session_capability cap)
|
Expanding_ram_session_client(Ram_session_capability cap)
|
||||||
: Ram_session_client(cap), _cap(cap) { }
|
: Ram_session_client(cap), _cap(cap) { }
|
||||||
|
|
||||||
Ram_dataspace_capability alloc(size_t size, bool cached) {
|
Ram_dataspace_capability alloc(size_t size, bool cached)
|
||||||
|
{
|
||||||
bool try_again;
|
bool try_again;
|
||||||
do {
|
do {
|
||||||
try_again = false;
|
try_again = false;
|
||||||
@ -316,6 +317,35 @@ namespace Genode {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Expanding_cpu_session_client : public Linux_cpu_session_client
|
||||||
|
{
|
||||||
|
Cpu_session_capability _cap;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Expanding_cpu_session_client(Cpu_session_capability cap)
|
||||||
|
: Linux_cpu_session_client(static_cap_cast<Linux_cpu_session>(cap)), _cap(cap) { }
|
||||||
|
|
||||||
|
Thread_capability create_thread(Name const &name, addr_t utcb = 0) {
|
||||||
|
bool try_again;
|
||||||
|
do {
|
||||||
|
try_again = false;
|
||||||
|
try {
|
||||||
|
return Linux_cpu_session_client::create_thread(name, utcb);
|
||||||
|
}
|
||||||
|
catch (Cpu_session::Out_of_metadata) {
|
||||||
|
if (try_again)
|
||||||
|
break;
|
||||||
|
PINF("upgrade quota donation for Env::CPU session");
|
||||||
|
env()->parent()->upgrade(_cap, "ram_quota=8K");
|
||||||
|
try_again = true;
|
||||||
|
}
|
||||||
|
} while (try_again);
|
||||||
|
|
||||||
|
return Thread_capability();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*******************************
|
/*******************************
|
||||||
** Platform-specific members **
|
** Platform-specific members **
|
||||||
@ -324,7 +354,7 @@ namespace Genode {
|
|||||||
Ram_session_capability _ram_session_cap;
|
Ram_session_capability _ram_session_cap;
|
||||||
Expanding_ram_session_client _ram_session_client;
|
Expanding_ram_session_client _ram_session_client;
|
||||||
Cpu_session_capability _cpu_session_cap;
|
Cpu_session_capability _cpu_session_cap;
|
||||||
Linux_cpu_session_client _cpu_session_client;
|
Expanding_cpu_session_client _cpu_session_client;
|
||||||
Rm_session_mmap _rm_session_mmap;
|
Rm_session_mmap _rm_session_mmap;
|
||||||
Pd_session_client _pd_session_client;
|
Pd_session_client _pd_session_client;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user