mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-19 15:43:56 +00:00
@ -25,8 +25,7 @@ using namespace Genode;
|
|||||||
** Startup library support **
|
** Startup library support **
|
||||||
*****************************/
|
*****************************/
|
||||||
|
|
||||||
void prepare_init_main_thread() { }
|
void prepare_init_main_thread() { }
|
||||||
void prepare_reinit_main_thread() { }
|
|
||||||
|
|
||||||
|
|
||||||
/************
|
/************
|
||||||
|
@ -38,14 +38,6 @@ void prepare_init_main_thread()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void prepare_reinit_main_thread()
|
|
||||||
{
|
|
||||||
construct_at<Capability_map>(&cap_map());
|
|
||||||
cap_idx_alloc().reinit();
|
|
||||||
prepare_init_main_thread();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************
|
/************
|
||||||
** Thread **
|
** Thread **
|
||||||
************/
|
************/
|
||||||
|
@ -58,9 +58,6 @@ void prepare_init_main_thread()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void prepare_reinit_main_thread() { prepare_init_main_thread(); }
|
|
||||||
|
|
||||||
|
|
||||||
/************
|
/************
|
||||||
** Thread **
|
** Thread **
|
||||||
************/
|
************/
|
||||||
|
@ -56,9 +56,6 @@ void Thread::_init_platform_thread(size_t weight, Type type)
|
|||||||
addr_t const utcb_new = (addr_t)&_stack->utcb() - stack_area;
|
addr_t const utcb_new = (addr_t)&_stack->utcb() - stack_area;
|
||||||
Region_map * const rm = env_stack_area_region_map;
|
Region_map * const rm = env_stack_area_region_map;
|
||||||
|
|
||||||
if (type == REINITIALIZED_MAIN)
|
|
||||||
rm->detach(utcb_new);
|
|
||||||
|
|
||||||
/* remap initial main-thread UTCB according to stack-area spec */
|
/* remap initial main-thread UTCB according to stack-area spec */
|
||||||
try { rm->attach_at(Hw::_main_thread_utcb_ds, utcb_new, utcb_size); }
|
try { rm->attach_at(Hw::_main_thread_utcb_ds, utcb_new, utcb_size); }
|
||||||
catch(...) {
|
catch(...) {
|
||||||
|
@ -31,7 +31,6 @@ SRC_CC := main.cc \
|
|||||||
core_log.cc \
|
core_log.cc \
|
||||||
core_log_out.cc \
|
core_log_out.cc \
|
||||||
default_log.cc \
|
default_log.cc \
|
||||||
env_reinit.cc \
|
|
||||||
heartbeat.cc \
|
heartbeat.cc \
|
||||||
thread.cc \
|
thread.cc \
|
||||||
thread_myself.cc
|
thread_myself.cc
|
||||||
@ -61,7 +60,6 @@ vpath heartbeat.cc $(GEN_CORE_DIR)
|
|||||||
vpath thread.cc $(BASE_DIR)/src/lib/base
|
vpath thread.cc $(BASE_DIR)/src/lib/base
|
||||||
vpath thread_myself.cc $(BASE_DIR)/src/lib/base
|
vpath thread_myself.cc $(BASE_DIR)/src/lib/base
|
||||||
vpath trace.cc $(BASE_DIR)/src/lib/base
|
vpath trace.cc $(BASE_DIR)/src/lib/base
|
||||||
vpath env_reinit.cc $(REP_DIR)/src/lib/base
|
|
||||||
vpath dataspace_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
|
vpath dataspace_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
|
||||||
vpath io_mem_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
|
vpath io_mem_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
|
||||||
vpath irq_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
|
vpath irq_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
|
||||||
|
@ -91,9 +91,6 @@ class Genode::Platform_env_base : public Env_deprecated
|
|||||||
Cpu_session_capability cpu_session_cap() override { return _cpu_session_cap; }
|
Cpu_session_capability cpu_session_cap() override { return _cpu_session_cap; }
|
||||||
Pd_session *pd_session() override { return &_local_pd_session; }
|
Pd_session *pd_session() override { return &_local_pd_session; }
|
||||||
Pd_session_capability pd_session_cap() override { return _pd_session_cap; }
|
Pd_session_capability pd_session_cap() override { return _pd_session_cap; }
|
||||||
|
|
||||||
void reinit(Native_capability::Raw) override;
|
|
||||||
void reinit_main_thread(Capability<Region_map> &) override;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Environment reinitialization
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2016-04-29
|
|
||||||
*
|
|
||||||
* Support functions for implementing fork on Noux, which is not supported on
|
|
||||||
* Linux.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2016-2017 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU Affero General Public License version 3.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* base-internal includes */
|
|
||||||
#include <base/internal/platform_env.h>
|
|
||||||
|
|
||||||
|
|
||||||
void Genode::Platform_env_base::reinit(Native_capability::Raw) { }
|
|
||||||
|
|
||||||
|
|
||||||
void Genode::Platform_env_base::reinit_main_thread(Capability<Region_map> &) { }
|
|
@ -100,14 +100,6 @@ void prepare_init_main_thread()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void prepare_reinit_main_thread()
|
|
||||||
{
|
|
||||||
using namespace Genode;
|
|
||||||
construct_at<Capability_map>(&cap_map());
|
|
||||||
construct_at<Initial_cap_range>(&initial_cap_range());
|
|
||||||
prepare_init_main_thread();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************
|
/************
|
||||||
** Thread **
|
** Thread **
|
||||||
|
@ -81,7 +81,7 @@ void Thread::_init_platform_thread(size_t weight, Type type)
|
|||||||
native_thread().ec_sel = Native_thread::INVALID_INDEX;
|
native_thread().ec_sel = Native_thread::INVALID_INDEX;
|
||||||
|
|
||||||
/* for main threads the member initialization differs */
|
/* for main threads the member initialization differs */
|
||||||
if (type == MAIN || type == REINITIALIZED_MAIN) {
|
if (type == MAIN) {
|
||||||
_thread_cap = main_thread_cap();
|
_thread_cap = main_thread_cap();
|
||||||
|
|
||||||
native_thread().exc_pt_sel = 0;
|
native_thread().exc_pt_sel = 0;
|
||||||
|
@ -65,9 +65,6 @@ void prepare_init_main_thread()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void prepare_reinit_main_thread() { prepare_init_main_thread(); }
|
|
||||||
|
|
||||||
|
|
||||||
/************
|
/************
|
||||||
** Thread **
|
** Thread **
|
||||||
************/
|
************/
|
||||||
|
@ -32,8 +32,6 @@ void prepare_init_main_thread()
|
|||||||
main_thread_tid = Pistachio::L4_Myself();
|
main_thread_tid = Pistachio::L4_Myself();
|
||||||
}
|
}
|
||||||
|
|
||||||
void prepare_reinit_main_thread() { prepare_init_main_thread(); }
|
|
||||||
|
|
||||||
|
|
||||||
/************
|
/************
|
||||||
** Thread **
|
** Thread **
|
||||||
|
@ -64,18 +64,6 @@ static unsigned &rcv_sel()
|
|||||||
** Startup library support **
|
** Startup library support **
|
||||||
*****************************/
|
*****************************/
|
||||||
|
|
||||||
void prepare_reinit_main_thread()
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Reset selector to invalid, so that a new fresh will be allocated.
|
|
||||||
* The IPC buffer of the thread must be configured to point to the
|
|
||||||
* receive selector which is done by Capability_space::alloc_rcv_sel(),
|
|
||||||
* which finally calls seL4_SetCapReceivePath();
|
|
||||||
*/
|
|
||||||
rcv_sel() = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert Genode::Msgbuf_base content into seL4 message
|
* Convert Genode::Msgbuf_base content into seL4 message
|
||||||
*
|
*
|
||||||
|
@ -141,33 +141,6 @@ struct Genode::Env : Interface
|
|||||||
*/
|
*/
|
||||||
virtual void exec_static_constructors() = 0;
|
virtual void exec_static_constructors() = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Reload parent capability and reinitialize environment resources
|
|
||||||
*
|
|
||||||
* This method is solely used for implementing fork in Noux. After forking
|
|
||||||
* a process, the new child process is executed within a copy of the
|
|
||||||
* address space of the forking process. Thereby, the new process inherits
|
|
||||||
* the original 'env' object of the forking process, which is meaningless
|
|
||||||
* in the context of the new process. By calling this function, the new
|
|
||||||
* process is able to reinitialize its 'env' with meaningful capabilities
|
|
||||||
* obtained via its updated parent capability.
|
|
||||||
*
|
|
||||||
* \noapi
|
|
||||||
*/
|
|
||||||
virtual void reinit(Native_capability::Raw) = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reinitialize main-thread object
|
|
||||||
*
|
|
||||||
* \param stack_area_rm new region map of the stack area
|
|
||||||
*
|
|
||||||
* This function is solely used for implementing fork as provided by the
|
|
||||||
* Noux environment.
|
|
||||||
*
|
|
||||||
* \noapi
|
|
||||||
*/
|
|
||||||
virtual void reinit_main_thread(Capability<Region_map> &stack_area_rm) = 0;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt the creation of a session
|
* Attempt the creation of a session
|
||||||
*
|
*
|
||||||
|
@ -138,7 +138,7 @@ class Genode::Thread
|
|||||||
* Some threads need special treatment at construction. This enum
|
* Some threads need special treatment at construction. This enum
|
||||||
* is solely used to distinguish them at construction.
|
* is solely used to distinguish them at construction.
|
||||||
*/
|
*/
|
||||||
enum Type { NORMAL, MAIN, REINITIALIZED_MAIN };
|
enum Type { NORMAL, MAIN };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -87,34 +87,6 @@ struct Genode::Env_deprecated : Interface
|
|||||||
*/
|
*/
|
||||||
virtual Pd_session *pd_session() = 0;
|
virtual Pd_session *pd_session() = 0;
|
||||||
virtual Pd_session_capability pd_session_cap() = 0;
|
virtual Pd_session_capability pd_session_cap() = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Reload parent capability and reinitialize environment resources
|
|
||||||
*
|
|
||||||
* This function is solely used for implementing fork semantics.
|
|
||||||
* After forking a process, the new child process is executed
|
|
||||||
* within a copy of the address space of the forking process.
|
|
||||||
* Thereby, the new process inherits the original 'env' object of
|
|
||||||
* the forking process, which is meaningless in the context of the
|
|
||||||
* new process. By calling this function, the new process is able
|
|
||||||
* to reinitialize its 'env' with meaningful capabilities obtained
|
|
||||||
* via its updated parent capability.
|
|
||||||
*
|
|
||||||
* \noapi
|
|
||||||
*/
|
|
||||||
virtual void reinit(Native_capability::Raw) = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reinitialize main-thread object
|
|
||||||
*
|
|
||||||
* \param stack_area_rm new RM session of the stack area
|
|
||||||
*
|
|
||||||
* This function is solely used for implementing fork semantics
|
|
||||||
* as provided by the Noux environment.
|
|
||||||
*
|
|
||||||
* \noapi
|
|
||||||
*/
|
|
||||||
virtual void reinit_main_thread(Capability<Region_map> &stack_area_rm) = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _INCLUDE__DEPRECATED__ENV_H_ */
|
#endif /* _INCLUDE__DEPRECATED__ENV_H_ */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
SRC_CC += default_log.cc
|
SRC_CC += default_log.cc
|
||||||
SRC_CC += env_deprecated.cc stack_area.cc env_reinit.cc main_thread_cap.cc
|
SRC_CC += env_deprecated.cc stack_area.cc main_thread_cap.cc
|
||||||
SRC_CC += rpc_cap_alloc.cc heartbeat.cc
|
SRC_CC += rpc_cap_alloc.cc heartbeat.cc
|
||||||
SRC_CC += vm.cc
|
SRC_CC += vm.cc
|
||||||
|
|
||||||
|
@ -99,9 +99,6 @@ class Genode::Core_env : public Env_deprecated, Noncopyable
|
|||||||
Cpu_session *cpu_session() override { ASSERT_NEVER_CALLED; }
|
Cpu_session *cpu_session() override { ASSERT_NEVER_CALLED; }
|
||||||
Cpu_session_capability cpu_session_cap() override { ASSERT_NEVER_CALLED; }
|
Cpu_session_capability cpu_session_cap() override { ASSERT_NEVER_CALLED; }
|
||||||
Pd_session_capability pd_session_cap() override { return _pd_session.cap(); }
|
Pd_session_capability pd_session_cap() override { return _pd_session.cap(); }
|
||||||
|
|
||||||
void reinit(Capability<Parent>::Raw) override { }
|
|
||||||
void reinit_main_thread(Capability<Region_map> &) override { }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _CORE__INCLUDE__CORE_ENV_H_ */
|
#endif /* _CORE__INCLUDE__CORE_ENV_H_ */
|
||||||
|
@ -96,12 +96,6 @@ class Genode::Platform_env : public Platform_env_base
|
|||||||
env_stack_area_region_map = &_stack_area;
|
env_stack_area_region_map = &_stack_area;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Support functions for implementing fork on Noux.
|
|
||||||
*/
|
|
||||||
void reinit(Native_capability::Raw) override;
|
|
||||||
void reinit_main_thread(Capability<Region_map> &) override;
|
|
||||||
|
|
||||||
|
|
||||||
/******************************
|
/******************************
|
||||||
** Env_deprecated interface **
|
** Env_deprecated interface **
|
||||||
|
@ -94,16 +94,6 @@ namespace {
|
|||||||
return Genode::env_session_id_space();
|
return Genode::env_session_id_space();
|
||||||
}
|
}
|
||||||
|
|
||||||
void reinit(Native_capability::Raw raw) override
|
|
||||||
{
|
|
||||||
Genode::env_deprecated()->reinit(raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void reinit_main_thread(Capability<Region_map> &stack_area_rm) override
|
|
||||||
{
|
|
||||||
Genode::env_deprecated()->reinit_main_thread(stack_area_rm);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _block_for_session()
|
void _block_for_session()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -1,90 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Environment reinitialization
|
|
||||||
* \author Norman Feske
|
|
||||||
* \author Martin Stein
|
|
||||||
* \date 2012-02-16
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2012-2017 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU Affero General Public License version 3.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Genode includes */
|
|
||||||
#include <util/construct_at.h>
|
|
||||||
#include <rm_session/connection.h>
|
|
||||||
|
|
||||||
/* base-internal includes */
|
|
||||||
#include <base/internal/platform_env.h>
|
|
||||||
#include <base/internal/crt0.h>
|
|
||||||
|
|
||||||
void prepare_reinit_main_thread();
|
|
||||||
|
|
||||||
void reinit_main_thread();
|
|
||||||
|
|
||||||
namespace Genode { extern bool inhibit_tracing; }
|
|
||||||
|
|
||||||
|
|
||||||
void Genode::Platform_env::reinit(Native_capability::Raw raw)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* This function is unused during the normal operation of Genode. It is
|
|
||||||
* relevant only for implementing fork semantics such as provided by the
|
|
||||||
* Noux execution environment.
|
|
||||||
*
|
|
||||||
* The function is called by the freshly created process right after the
|
|
||||||
* fork happened.
|
|
||||||
*
|
|
||||||
* The existing 'Platform_env' object contains capabilities that are
|
|
||||||
* meaningful for the forking process but not the new process. Before the
|
|
||||||
* the environment can be used, it must be reinitialized with the resources
|
|
||||||
* provided by the actual parent.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* avoid RPCs by the tracing framework as long as we have no valid env */
|
|
||||||
inhibit_tracing = true;
|
|
||||||
|
|
||||||
/* do platform specific preparation */
|
|
||||||
prepare_reinit_main_thread();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Patch new parent capability into the original location as specified by
|
|
||||||
* the linker script.
|
|
||||||
*/
|
|
||||||
*(Native_capability::Raw *)(&_parent_cap) = raw;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Re-initialize 'Platform_env' members
|
|
||||||
*/
|
|
||||||
Expanding_parent_client * const p = &_parent_client;
|
|
||||||
construct_at<Expanding_parent_client>(p, parent_cap());
|
|
||||||
construct_at<Resources>(&_resources, _parent_client);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Keep information about dynamically allocated memory but use the new
|
|
||||||
* resources as backing store. Note that the capabilites of the already
|
|
||||||
* allocated backing-store dataspaces are rendered meaningless. But this is
|
|
||||||
* no problem because they are used by the 'Heap' destructor only, which is
|
|
||||||
* never called for heap instance of 'Platform_env'.
|
|
||||||
*/
|
|
||||||
_heap.reassign_resources(&_resources.pd, &_resources.rm);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Genode::Platform_env::
|
|
||||||
reinit_main_thread(Capability<Region_map> &stack_area_rm)
|
|
||||||
{
|
|
||||||
/* reinitialize stack area RM session */
|
|
||||||
Region_map * const rms = env_stack_area_region_map;
|
|
||||||
Region_map_client * const rmc = dynamic_cast<Region_map_client *>(rms);
|
|
||||||
construct_at<Region_map_client>(rmc, stack_area_rm);
|
|
||||||
|
|
||||||
/* reinitialize main-thread object */
|
|
||||||
::reinit_main_thread();
|
|
||||||
|
|
||||||
/* re-enable tracing */
|
|
||||||
inhibit_tracing = false;
|
|
||||||
}
|
|
@ -204,8 +204,7 @@ Thread::Thread(size_t weight, const char *name, size_t stack_size,
|
|||||||
_cpu_session(cpu_session),
|
_cpu_session(cpu_session),
|
||||||
_affinity(affinity),
|
_affinity(affinity),
|
||||||
_trace_control(nullptr),
|
_trace_control(nullptr),
|
||||||
_stack(type == REINITIALIZED_MAIN ?
|
_stack(_alloc_stack(stack_size, name, type == MAIN))
|
||||||
_stack : _alloc_stack(stack_size, name, type == MAIN))
|
|
||||||
{
|
{
|
||||||
_init_platform_thread(weight, type);
|
_init_platform_thread(weight, type);
|
||||||
}
|
}
|
||||||
|
@ -56,32 +56,24 @@ extern unsigned char __initial_stack_base[];
|
|||||||
/**
|
/**
|
||||||
* The first thread in a program
|
* The first thread in a program
|
||||||
*/
|
*/
|
||||||
class Main_thread : public Thread
|
struct Main_thread : Thread
|
||||||
{
|
{
|
||||||
public:
|
Main_thread()
|
||||||
|
:
|
||||||
|
Thread(Weight::DEFAULT_WEIGHT, "main", MAIN_THREAD_STACK_SIZE, Type::MAIN)
|
||||||
|
{ }
|
||||||
|
|
||||||
/**
|
/**********************
|
||||||
* Constructor
|
** Thread interface **
|
||||||
*
|
**********************/
|
||||||
* \param reinit wether this is called for reinitialization
|
|
||||||
*/
|
|
||||||
Main_thread(bool reinit)
|
|
||||||
:
|
|
||||||
Thread(Weight::DEFAULT_WEIGHT, "main", MAIN_THREAD_STACK_SIZE,
|
|
||||||
reinit ? Type::REINITIALIZED_MAIN : Type::MAIN)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
/**********************
|
void entry() override { }
|
||||||
** Thread interface **
|
|
||||||
**********************/
|
|
||||||
|
|
||||||
void entry() override { }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Main_thread * main_thread()
|
Main_thread * main_thread()
|
||||||
{
|
{
|
||||||
static Main_thread s(false);
|
static Main_thread s { };
|
||||||
return &s;
|
return &s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,9 +126,3 @@ extern "C" void init_main_thread()
|
|||||||
for (;;);
|
for (;;);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reinitialize main-thread object according to a reinitialized environment
|
|
||||||
*/
|
|
||||||
void reinit_main_thread() { construct_at<Main_thread>(main_thread(), true); }
|
|
||||||
|
@ -74,14 +74,6 @@ struct Qt_launchpad_namespace::Local_env : Genode::Env
|
|||||||
void close(Parent::Client::Id id) override { return genode_env.close(id); }
|
void close(Parent::Client::Id id) override { return genode_env.close(id); }
|
||||||
|
|
||||||
void exec_static_constructors() override { }
|
void exec_static_constructors() override { }
|
||||||
|
|
||||||
void reinit(Native_capability::Raw raw) override {
|
|
||||||
genode_env.reinit(raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void reinit_main_thread(Capability<Region_map> &stack_area_rm) override {
|
|
||||||
genode_env.reinit_main_thread(stack_area_rm);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -129,12 +129,6 @@ class Libc::Env_implementation : public Libc::Env, public Config_accessor
|
|||||||
|
|
||||||
/* already done by the libc */
|
/* already done by the libc */
|
||||||
void exec_static_constructors() override { }
|
void exec_static_constructors() override { }
|
||||||
|
|
||||||
void reinit(Native_capability::Raw raw) override {
|
|
||||||
_env.reinit(raw); }
|
|
||||||
|
|
||||||
void reinit_main_thread(Capability<Region_map> &stack_area_rm) override {
|
|
||||||
_env.reinit_main_thread(stack_area_rm); }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _LIBC__INTERNAL__ENV_H_ */
|
#endif /* _LIBC__INTERNAL__ENV_H_ */
|
||||||
|
@ -98,14 +98,6 @@ class Gdb_monitor::App_child : public Child_policy,
|
|||||||
void close(Parent::Client::Id id) override { return genode_env.close(id); }
|
void close(Parent::Client::Id id) override { return genode_env.close(id); }
|
||||||
|
|
||||||
void exec_static_constructors() override { }
|
void exec_static_constructors() override { }
|
||||||
|
|
||||||
void reinit(Native_capability::Raw raw) override {
|
|
||||||
genode_env.reinit(raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void reinit_main_thread(Capability<Region_map> &stack_area_rm) override {
|
|
||||||
genode_env.reinit_main_thread(stack_area_rm);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Local_env _env;
|
Local_env _env;
|
||||||
|
Reference in New Issue
Block a user