mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 17:52:52 +00:00
parent
8bc14eb75a
commit
ea7ed5947a
@ -42,7 +42,7 @@ namespace Genode {
|
||||
* Constructors
|
||||
*/
|
||||
Platform_pd(bool core);
|
||||
Platform_pd(signed pd_id = -1, bool create = true);
|
||||
Platform_pd(char const *, signed pd_id = -1, bool create = true);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
|
@ -98,7 +98,8 @@ Platform_pd::Platform_pd(bool core)
|
||||
}
|
||||
|
||||
|
||||
Platform_pd::Platform_pd(signed pd_id, bool create) : _space_id(TASK_ID_INVALID)
|
||||
Platform_pd::Platform_pd(char const *, signed pd_id, bool create)
|
||||
: _space_id(TASK_ID_INVALID)
|
||||
{
|
||||
_space_id = TASK_ID_INVALID;
|
||||
|
||||
|
@ -35,6 +35,7 @@ namespace Genode {
|
||||
*/
|
||||
typedef Synchronized_range_allocator<Allocator_avl> Phys_allocator;
|
||||
|
||||
char _core_label[1]; /* to satisfy _core_pd */
|
||||
Platform_pd *_core_pd; /* core protection domain object */
|
||||
Phys_allocator _ram_alloc; /* RAM allocator */
|
||||
Phys_allocator _io_mem_alloc; /* MMIO allocator */
|
||||
|
@ -142,7 +142,8 @@ namespace Genode {
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Platform_pd(signed pd_id = PD_INVALID, bool create = true);
|
||||
Platform_pd(char const *, signed pd_id = PD_INVALID,
|
||||
bool create = true);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
|
@ -489,7 +489,8 @@ Platform::Platform() :
|
||||
Platform_pd::init();
|
||||
|
||||
/* setup pd object for core pd */
|
||||
_core_pd = new(core_mem_alloc()) Platform_pd(myself.id.task, false);
|
||||
_core_label[0] = 0;
|
||||
_core_pd = new(core_mem_alloc()) Platform_pd(_core_label, myself.id.task, false);
|
||||
|
||||
/*
|
||||
* We setup the thread object for thread0 in core pd using a special
|
||||
|
@ -236,7 +236,7 @@ void Platform_pd::unbind_thread(Platform_thread *thread)
|
||||
}
|
||||
|
||||
|
||||
Platform_pd::Platform_pd(signed pd_id, bool create)
|
||||
Platform_pd::Platform_pd(char const *, signed pd_id, bool create)
|
||||
{
|
||||
/* check correct init */
|
||||
if (!_init)
|
||||
|
@ -27,7 +27,7 @@ namespace Genode {
|
||||
* Constructors
|
||||
*/
|
||||
Platform_pd(bool core);
|
||||
Platform_pd(signed pd_id = -1, bool create = true);
|
||||
Platform_pd(char const *, signed pd_id = -1, bool create = true);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
|
@ -43,7 +43,7 @@ Platform_pd::Platform_pd(bool core)
|
||||
}
|
||||
|
||||
|
||||
Platform_pd::Platform_pd(signed pd_id, bool create)
|
||||
Platform_pd::Platform_pd(char const *, signed pd_id, bool create)
|
||||
{
|
||||
PWRN("not yet implemented");
|
||||
}
|
||||
|
@ -41,13 +41,14 @@ namespace Genode
|
||||
Native_capability _parent; /* our parent interface */
|
||||
Native_thread_id _main_thread; /* the first thread that gets
|
||||
* executed in this PD */
|
||||
char const * _label; /* PD-connection label */
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Platform_pd() : _main_thread(0)
|
||||
Platform_pd(char const *label) : _main_thread(0), _label(label)
|
||||
{
|
||||
/* get some aligned space for the kernel object */
|
||||
void * kernel_pd;
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
/* Genode includes */
|
||||
#include <base/rpc_server.h>
|
||||
#include <util/arg_string.h>
|
||||
#include <pd_session/pd_session.h>
|
||||
|
||||
/* core includes */
|
||||
@ -27,6 +28,24 @@ namespace Genode {
|
||||
{
|
||||
private:
|
||||
|
||||
/**
|
||||
* Read and store the PD label
|
||||
*/
|
||||
struct Label {
|
||||
|
||||
enum { MAX_LEN = 64 };
|
||||
char string[MAX_LEN];
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Label(char const *args)
|
||||
{
|
||||
Arg_string::find_arg(args, "label").string(string, sizeof(string), "");
|
||||
}
|
||||
|
||||
} const _label;
|
||||
|
||||
Platform_pd _pd;
|
||||
Parent_capability _parent;
|
||||
Rpc_entrypoint *_thread_ep;
|
||||
@ -34,7 +53,7 @@ namespace Genode {
|
||||
public:
|
||||
|
||||
Pd_session_component(Rpc_entrypoint *thread_ep, const char *args)
|
||||
: _thread_ep(thread_ep) { }
|
||||
: _label(args), _pd(_label.string), _thread_ep(thread_ep) { }
|
||||
|
||||
|
||||
/**************************/
|
||||
|
@ -39,7 +39,7 @@ namespace Genode {
|
||||
/**
|
||||
* Constructors
|
||||
*/
|
||||
Platform_pd(signed pd_id = -1, bool create = true);
|
||||
Platform_pd(char const *, signed pd_id = -1, bool create = true);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
|
@ -47,7 +47,7 @@ int Platform_pd::assign_parent(Native_capability parent)
|
||||
}
|
||||
|
||||
|
||||
Platform_pd::Platform_pd(signed pd_id, bool create)
|
||||
Platform_pd::Platform_pd(char const *, signed pd_id, bool create)
|
||||
: _thread_cnt(0), _pd_sel(~0UL) { }
|
||||
|
||||
|
||||
|
@ -183,7 +183,8 @@ namespace Genode {
|
||||
* Constructors
|
||||
*/
|
||||
Platform_pd(bool core);
|
||||
Platform_pd(signed pd_id = PD_INVALID, bool create = true);
|
||||
Platform_pd(char const *, signed pd_id = PD_INVALID,
|
||||
bool create = true);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
|
@ -340,7 +340,7 @@ Platform_pd::Platform_pd(bool core) :
|
||||
}
|
||||
|
||||
|
||||
Platform_pd::Platform_pd(signed pd_id, bool create)
|
||||
Platform_pd::Platform_pd(char const *, signed pd_id, bool create)
|
||||
{
|
||||
if (!create)
|
||||
panic("create must be true.");
|
||||
|
@ -17,6 +17,7 @@
|
||||
/* Genode includes */
|
||||
#include <base/rpc_server.h>
|
||||
#include <pd_session/pd_session.h>
|
||||
#include <util/arg_string.h>
|
||||
|
||||
/* core includes */
|
||||
#include <platform_pd.h>
|
||||
@ -27,14 +28,32 @@ namespace Genode {
|
||||
{
|
||||
private:
|
||||
|
||||
/**
|
||||
* Read and store the PD label
|
||||
*/
|
||||
struct Label {
|
||||
|
||||
enum { MAX_LEN = 64 };
|
||||
char string[MAX_LEN];
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Label(char const *args)
|
||||
{
|
||||
Arg_string::find_arg(args, "label").string(string, sizeof(string), "");
|
||||
}
|
||||
|
||||
} const _label;
|
||||
|
||||
Platform_pd _pd;
|
||||
Parent_capability _parent;
|
||||
Rpc_entrypoint *_thread_ep;
|
||||
|
||||
public:
|
||||
|
||||
Pd_session_component(Rpc_entrypoint *thread_ep, const char *args)
|
||||
: _thread_ep(thread_ep) { }
|
||||
Pd_session_component(Rpc_entrypoint *thread_ep, char const *args)
|
||||
: _label(args), _pd(_label.string), _thread_ep(thread_ep) { }
|
||||
|
||||
|
||||
/**************************/
|
||||
|
Loading…
x
Reference in New Issue
Block a user