mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-13 04:38:20 +00:00
committed by
Christian Helmuth
parent
5a3a1c704b
commit
0167d5af50
@ -8,7 +8,7 @@ SRC_CC = main.cc \
|
||||
platform.cc \
|
||||
platform_thread.cc \
|
||||
platform_services.cc \
|
||||
ram_session_component.cc \
|
||||
pd_session_component.cc \
|
||||
ram_dataspace_support.cc \
|
||||
rom_session_component.cc \
|
||||
cpu_session_component.cc \
|
||||
@ -48,7 +48,7 @@ LD_SCRIPT_STATIC = $(BASE_DIR)/src/ld/genode.ld \
|
||||
include $(GEN_CORE_DIR)/version.inc
|
||||
|
||||
vpath main.cc $(GEN_CORE_DIR)
|
||||
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath pd_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath cpu_session_support.cc $(GEN_CORE_DIR)
|
||||
vpath cpu_thread_component.cc $(GEN_CORE_DIR)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <linux_native_cpu/client.h>
|
||||
|
||||
/* base-internal includes */
|
||||
#include <base/internal/expanding_pd_session_client.h>
|
||||
#include <base/internal/local_capability.h>
|
||||
#include <base/internal/region_map_mmap.h>
|
||||
#include <base/internal/stack_area.h>
|
||||
@ -26,13 +27,13 @@
|
||||
namespace Genode { struct Local_pd_session; }
|
||||
|
||||
|
||||
struct Genode::Local_pd_session : Pd_session_client
|
||||
struct Genode::Local_pd_session : Expanding_pd_session_client
|
||||
{
|
||||
Region_map_mmap _address_space { false };
|
||||
Region_map_mmap _stack_area { true, stack_area_virtual_size() };
|
||||
Region_map_mmap _linker_area { true, Pd_session::LINKER_AREA_SIZE };
|
||||
|
||||
Local_pd_session(Pd_session_capability pd) : Pd_session_client(pd) { }
|
||||
Local_pd_session(Pd_session_capability pd) : Expanding_pd_session_client(pd) { }
|
||||
|
||||
Capability<Region_map> address_space()
|
||||
{
|
||||
|
@ -21,7 +21,7 @@
|
||||
/* base-internal includes */
|
||||
#include <base/internal/expanding_cpu_session_client.h>
|
||||
#include <base/internal/expanding_region_map_client.h>
|
||||
#include <base/internal/expanding_ram_session_client.h>
|
||||
#include <base/internal/expanding_pd_session_client.h>
|
||||
#include <base/internal/expanding_parent_client.h>
|
||||
#include <base/internal/region_map_mmap.h>
|
||||
#include <base/internal/local_rm_session.h>
|
||||
@ -42,8 +42,6 @@ class Genode::Platform_env_base : public Env_deprecated
|
||||
{
|
||||
private:
|
||||
|
||||
Ram_session_capability _ram_session_cap;
|
||||
Expanding_ram_session_client _ram_session_client;
|
||||
Cpu_session_capability _cpu_session_cap;
|
||||
Expanding_cpu_session_client _cpu_session_client;
|
||||
Region_map_mmap _region_map_mmap;
|
||||
@ -64,12 +62,9 @@ class Genode::Platform_env_base : public Env_deprecated
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Platform_env_base(Ram_session_capability ram_cap,
|
||||
Cpu_session_capability cpu_cap,
|
||||
Platform_env_base(Cpu_session_capability cpu_cap,
|
||||
Pd_session_capability pd_cap)
|
||||
:
|
||||
_ram_session_cap(ram_cap),
|
||||
_ram_session_client(_ram_session_cap, Parent::Env::ram()),
|
||||
_cpu_session_cap(cpu_cap),
|
||||
_cpu_session_client(cpu_cap, Parent::Env::cpu()),
|
||||
_region_map_mmap(false),
|
||||
@ -77,13 +72,21 @@ class Genode::Platform_env_base : public Env_deprecated
|
||||
_local_pd_session(_pd_session_cap)
|
||||
{ }
|
||||
|
||||
/**
|
||||
* Constructor used by 'Core_env'
|
||||
*/
|
||||
Platform_env_base()
|
||||
:
|
||||
Platform_env_base(Cpu_session_capability(), Pd_session_capability())
|
||||
{ }
|
||||
|
||||
|
||||
/******************************
|
||||
** Env_deprecated interface **
|
||||
******************************/
|
||||
|
||||
Ram_session *ram_session() override { return &_ram_session_client; }
|
||||
Ram_session_capability ram_session_cap() override { return _ram_session_cap; }
|
||||
Ram_session *ram_session() override { return &_local_pd_session; }
|
||||
Ram_session_capability ram_session_cap() override { return _pd_session_cap; }
|
||||
Region_map *rm_session() override { return &_region_map_mmap; }
|
||||
Cpu_session *cpu_session() override { return &_cpu_session_client; }
|
||||
Cpu_session_capability cpu_session_cap() override { return _cpu_session_cap; }
|
||||
|
@ -155,8 +155,7 @@ Local_parent &Platform_env::_parent()
|
||||
|
||||
Platform_env::Platform_env()
|
||||
:
|
||||
Platform_env_base(static_cap_cast<Ram_session>(_parent().session_cap(Parent::Env::ram())),
|
||||
static_cap_cast<Cpu_session>(_parent().session_cap(Parent::Env::cpu())),
|
||||
Platform_env_base(static_cap_cast<Cpu_session>(_parent().session_cap(Parent::Env::cpu())),
|
||||
static_cap_cast<Pd_session> (_parent().session_cap(Parent::Env::pd()))),
|
||||
_heap(Platform_env_base::ram_session(), Platform_env_base::rm_session()),
|
||||
_emergency_ram_ds(ram_session()->alloc(_emergency_ram_size()))
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include <base/component.h>
|
||||
#include <ram_session/connection.h>
|
||||
#include <pd_session/connection.h>
|
||||
#include <timer_session/connection.h>
|
||||
|
||||
using namespace Genode;
|
||||
@ -22,17 +22,16 @@ static void test_linux_rmmap_bug(Env &env)
|
||||
enum { QUOTA = 1*1024*1024, CHUNK = 0x1000, ROUNDS = 0x10 };
|
||||
|
||||
log("line: ", __LINE__);
|
||||
Ram_connection ram(env);
|
||||
Pd_connection pd(env);
|
||||
|
||||
#if 1 /* transfer quota */
|
||||
log("line: ", __LINE__);
|
||||
ram.ref_account(env.ram_session_cap());
|
||||
env.ram().transfer_quota(ram.cap(), QUOTA);
|
||||
#endif
|
||||
pd.ref_account(env.pd_session_cap());
|
||||
env.pd().transfer_quota(pd.cap(), Ram_quota{QUOTA});
|
||||
env.pd().transfer_quota(pd.cap(), Cap_quota{30});
|
||||
|
||||
log("line: ", __LINE__);
|
||||
for (unsigned i = 0; i < ROUNDS; ++i) {
|
||||
Ram_dataspace_capability ds(ram.alloc(CHUNK));
|
||||
Ram_dataspace_capability ds(pd.alloc(CHUNK));
|
||||
log(i + 1, " of ", (unsigned)ROUNDS, " pages allocated");
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user