core: split RAM dataspace factory from RAM service

By separating the session-interface concerns from the mechanics of the
dataspace creation, the code becomes simpler to follow, and the RAM
session can be more easily merged with the PD session in a subsequent
step.

Issue #2407
This commit is contained in:
Norman Feske
2017-05-11 15:03:03 +02:00
committed by Christian Helmuth
parent 65225a94b1
commit 4773707495
24 changed files with 384 additions and 289 deletions

View File

@ -9,7 +9,7 @@ SRC_CC = main.cc \
platform_thread.cc \
platform_services.cc \
ram_session_component.cc \
ram_session_support.cc \
ram_dataspace_support.cc \
rom_session_component.cc \
cpu_session_component.cc \
cpu_session_support.cc \
@ -21,6 +21,7 @@ SRC_CC = main.cc \
native_cpu_component.cc \
capability_space.cc \
rpc_cap_factory_l4.cc \
ram_dataspace_factory.cc \
core_rpc_cap_alloc.cc \
io_mem_session_component.cc \
signal_source_component.cc \
@ -54,6 +55,7 @@ vpath cpu_thread_component.cc $(GEN_CORE_DIR)
vpath pd_upgrade_ram_quota.cc $(GEN_CORE_DIR)
vpath capability_space.cc $(GEN_CORE_DIR)
vpath rpc_cap_factory_l4.cc $(GEN_CORE_DIR)
vpath ram_dataspace_factory.cc $(GEN_CORE_DIR)
vpath platform_services.cc $(GEN_CORE_DIR)
vpath signal_source_component.cc $(GEN_CORE_DIR)
vpath signal_transmitter_proxy.cc $(GEN_CORE_DIR)

View File

@ -18,7 +18,7 @@
#include <base/snprintf.h>
/* local includes */
#include <ram_session_component.h>
#include <ram_dataspace_factory.h>
#include <resource_path.h>
/* base-internal includes */
@ -33,7 +33,7 @@ using namespace Genode;
static int ram_ds_cnt = 0; /* counter for creating unique dataspace IDs */
void Ram_session_component::_export_ram_ds(Dataspace_component *ds)
void Ram_dataspace_factory::_export_ram_ds(Dataspace_component *ds)
{
char fname[Linux_dataspace::FNAME_LEN];
@ -56,7 +56,7 @@ void Ram_session_component::_export_ram_ds(Dataspace_component *ds)
}
void Ram_session_component::_revoke_ram_ds(Dataspace_component *ds)
void Ram_dataspace_factory::_revoke_ram_ds(Dataspace_component *ds)
{
int const fd = Capability_space::ipc_cap_data(ds->fd()).dst.socket;
if (fd != -1)
@ -64,4 +64,4 @@ void Ram_session_component::_revoke_ram_ds(Dataspace_component *ds)
}
void Ram_session_component::_clear_ds(Dataspace_component *ds) { }
void Ram_dataspace_factory::_clear_ds(Dataspace_component *ds) { }