Provide cpu_session_cap via environment object

Preparation to solve issue #10
This commit is contained in:
Alexander Boettcher
2012-10-10 13:05:54 +02:00
committed by Norman Feske
parent a287831537
commit 664e0dc7cd
6 changed files with 24 additions and 2 deletions

View File

@ -338,6 +338,7 @@ namespace Genode {
Local_parent _parent; Local_parent _parent;
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_client _cpu_session_client; Cpu_session_client _cpu_session_client;
Rm_session_mmap _rm_session_mmap; Rm_session_mmap _rm_session_mmap;
Heap _heap; Heap _heap;
@ -352,7 +353,8 @@ namespace Genode {
_parent(_parent_cap()), _parent(_parent_cap()),
_ram_session_cap(static_cap_cast<Ram_session>(parent()->session("Env::ram_session", ""))), _ram_session_cap(static_cap_cast<Ram_session>(parent()->session("Env::ram_session", ""))),
_ram_session_client(_ram_session_cap), _ram_session_client(_ram_session_cap),
_cpu_session_client(static_cap_cast<Cpu_session>(parent()->session("Env::cpu_session", ""))), _cpu_session_cap(static_cap_cast<Cpu_session>(parent()->session("Env::cpu_session", ""))),
_cpu_session_client(_cpu_session_cap),
_rm_session_mmap(false), _rm_session_mmap(false),
_heap(&_ram_session_client, &_rm_session_mmap) _heap(&_ram_session_client, &_rm_session_mmap)
{ } { }
@ -381,6 +383,7 @@ namespace Genode {
Rm_session *rm_session() { return &_rm_session_mmap; } Rm_session *rm_session() { return &_rm_session_mmap; }
Heap *heap() { return &_heap; } Heap *heap() { return &_heap; }
Cpu_session *cpu_session() { return &_cpu_session_client; } Cpu_session *cpu_session() { return &_cpu_session_client; }
Cpu_session_capability cpu_session_cap() { return _cpu_session_cap; }
Pd_session *pd_session() { return 0; } Pd_session *pd_session() { return 0; }
}; };
} }

View File

@ -61,6 +61,8 @@ class Minimal_env : public Genode::Env
Genode::Ram_session_capability ram_session_cap() { Genode::Ram_session_capability ram_session_cap() {
return Genode::Ram_session_capability(); } return Genode::Ram_session_capability(); }
Genode::Cpu_session_capability cpu_session_cap() {
return Genode::Cpu_session_capability(); }
}; };

View File

@ -22,6 +22,7 @@
#include <rm_session/rm_session.h> #include <rm_session/rm_session.h>
#include <ram_session/ram_session.h> #include <ram_session/ram_session.h>
#include <cpu_session/cpu_session.h> #include <cpu_session/cpu_session.h>
#include <cpu_session/capability.h>
#include <pd_session/pd_session.h> #include <pd_session/pd_session.h>
#include <base/allocator.h> #include <base/allocator.h>
#include <base/snprintf.h> #include <base/snprintf.h>
@ -56,6 +57,7 @@ namespace Genode {
* This session is used to create threads. * This session is used to create threads.
*/ */
virtual Cpu_session *cpu_session() = 0; virtual Cpu_session *cpu_session() = 0;
virtual Cpu_session_capability cpu_session_cap() = 0;
/** /**
* Region manager session of the program * Region manager session of the program

View File

@ -112,6 +112,7 @@ namespace Genode {
{ {
Ram_session_capability ram_cap; Ram_session_capability ram_cap;
Expanding_ram_session_client ram; Expanding_ram_session_client ram;
Cpu_session_capability cpu_cap;
Cpu_session_client cpu; Cpu_session_client cpu;
Expanding_rm_session_client rm; Expanding_rm_session_client rm;
Pd_session_client pd; Pd_session_client pd;
@ -120,7 +121,8 @@ namespace Genode {
: :
ram_cap(static_cap_cast<Ram_session>(parent.session("Env::ram_session", ""))), ram_cap(static_cap_cast<Ram_session>(parent.session("Env::ram_session", ""))),
ram(ram_cap), ram(ram_cap),
cpu(static_cap_cast<Cpu_session>(parent.session("Env::cpu_session", ""))), cpu_cap(static_cap_cast<Cpu_session>(parent.session("Env::cpu_session", ""))),
cpu(cpu_cap),
rm(static_cap_cast<Rm_session>(parent.session("Env::rm_session", ""))), rm(static_cap_cast<Rm_session>(parent.session("Env::rm_session", ""))),
pd(static_cap_cast<Pd_session>(parent.session("Env::pd_session", ""))) pd(static_cap_cast<Pd_session>(parent.session("Env::pd_session", "")))
{ } { }
@ -168,6 +170,7 @@ namespace Genode {
Ram_session *ram_session() { return &_resources.ram; } Ram_session *ram_session() { return &_resources.ram; }
Ram_session_capability ram_session_cap() { return _resources.ram_cap; } Ram_session_capability ram_session_cap() { return _resources.ram_cap; }
Cpu_session *cpu_session() { return &_resources.cpu; } Cpu_session *cpu_session() { return &_resources.cpu; }
Cpu_session_capability cpu_session_cap() { return _resources.cpu_cap; }
Rm_session *rm_session() { return &_resources.rm; } Rm_session *rm_session() { return &_resources.rm; }
Pd_session *pd_session() { return &_resources.pd; } Pd_session *pd_session() { return &_resources.pd; }
Allocator *heap() { return &_heap; } Allocator *heap() { return &_heap; }

View File

@ -407,6 +407,12 @@ void Child::exit(int exit_value)
} }
Thread_capability Child::main_thread_cap() const
{
return _process.main_thread_cap();
}
Child::Child(Dataspace_capability elf_ds, Child::Child(Dataspace_capability elf_ds,
Ram_session_capability ram, Ram_session_capability ram,
Cpu_session_capability cpu, Cpu_session_capability cpu,

View File

@ -163,6 +163,12 @@ namespace Genode {
return 0; return 0;
} }
Cpu_session_capability cpu_session_cap() {
PWRN("not implemented");
return Cpu_session_capability();
}
Pd_session *pd_session() Pd_session *pd_session()
{ {
PWRN("not implemented"); PWRN("not implemented");