mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-22 06:57:51 +00:00
Introduce platform-specific services for core
By now all services in core where created, and registered in the generic main routine. Although there exists already a x86-specific service (I/O ports) there was no possibility to announce core-services for certain platforms only. This commit introduces a hook function in the 'Platform' class, that enables registration of platform-specific services. Moreover, the io-port service is offered on x86 platforms only now.
This commit is contained in:
parent
96d45c1159
commit
dc3d784e6d
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Implementation of the IO_PORT session interface
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2009-10-02
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2009-2012 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "io_port_session_component.h"
|
|
||||||
|
|
||||||
using namespace Genode;
|
|
||||||
|
|
||||||
|
|
||||||
/**************
|
|
||||||
** Port API **
|
|
||||||
**************/
|
|
||||||
|
|
||||||
unsigned char Io_port_session_component::inb(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned short Io_port_session_component::inw(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned Io_port_session_component::inl(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outb(unsigned short address, unsigned char value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outw(unsigned short address, unsigned short value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outl(unsigned short address, unsigned value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
/******************************
|
|
||||||
** Constructor / destructor **
|
|
||||||
******************************/
|
|
||||||
|
|
||||||
Io_port_session_component::Io_port_session_component(Range_allocator *io_port_alloc,
|
|
||||||
const char *args)
|
|
||||||
: _io_port_alloc(io_port_alloc)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::~Io_port_session_component()
|
|
||||||
{ }
|
|
@ -19,11 +19,11 @@ SRC_CC = \
|
|||||||
thread_bootstrap.cc \
|
thread_bootstrap.cc \
|
||||||
platform_thread.cc \
|
platform_thread.cc \
|
||||||
platform_pd.cc \
|
platform_pd.cc \
|
||||||
|
platform_services.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
dataspace_component.cc \
|
dataspace_component.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
rm_session_support.cc \
|
rm_session_support.cc \
|
||||||
io_port_session_component.cc \
|
|
||||||
irq_session_component.cc \
|
irq_session_component.cc \
|
||||||
signal_session_component.cc \
|
signal_session_component.cc \
|
||||||
signal_source_component.cc \
|
signal_source_component.cc \
|
||||||
@ -45,6 +45,7 @@ vpath pd_session_component.cc $(GEN_CORE_DIR)
|
|||||||
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
||||||
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
||||||
@ -55,4 +56,3 @@ vpath %.cc $(REP_DIR)/src/core
|
|||||||
vpath thread_bootstrap.cc $(BASE_DIR)/src/base/thread
|
vpath thread_bootstrap.cc $(BASE_DIR)/src/base/thread
|
||||||
vpath thread.cc $(BASE_DIR)/src/base/thread
|
vpath thread.cc $(BASE_DIR)/src/base/thread
|
||||||
vpath utcb.cc $(REP_DIR)/src/base/env
|
vpath utcb.cc $(REP_DIR)/src/base/env
|
||||||
|
|
||||||
|
@ -4,4 +4,5 @@ REQUIRES += arm
|
|||||||
SRC_CC += platform_arm.cc
|
SRC_CC += platform_arm.cc
|
||||||
|
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/arm
|
vpath io_port_session_component.cc $(GEN_CORE_DIR)/arm
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ SRC_CC = main.cc \
|
|||||||
thread_bootstrap.cc \
|
thread_bootstrap.cc \
|
||||||
platform_thread.cc \
|
platform_thread.cc \
|
||||||
platform_pd.cc \
|
platform_pd.cc \
|
||||||
|
platform_services.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
dataspace_component.cc \
|
dataspace_component.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
|
@ -4,4 +4,5 @@ REQUIRES += x86
|
|||||||
SRC_CC += platform_x86.cc
|
SRC_CC += platform_x86.cc
|
||||||
|
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)/x86
|
||||||
|
|
||||||
|
@ -6,6 +6,4 @@ REQUIRES += arm foc_panda
|
|||||||
SRC_CC += arm/platform_arm.cc
|
SRC_CC += arm/platform_arm.cc
|
||||||
INC_DIR += $(REP_DIR)/src/core/include/arm
|
INC_DIR += $(REP_DIR)/src/core/include/arm
|
||||||
|
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/arm
|
|
||||||
|
|
||||||
|
@ -6,5 +6,5 @@ INC_DIR += $(REP_DIR)/src/core/include/arm
|
|||||||
|
|
||||||
LD_TEXT_ADDR = 0x70490000
|
LD_TEXT_ADDR = 0x70490000
|
||||||
|
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/arm
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
|
|
||||||
|
@ -6,56 +6,56 @@ LD_TEXT_ADDR = 0x500000
|
|||||||
|
|
||||||
GEN_CORE_DIR = $(BASE_DIR)/src/core
|
GEN_CORE_DIR = $(BASE_DIR)/src/core
|
||||||
|
|
||||||
SRC_CC = main.cc \
|
SRC_CC = cap_map.cc \
|
||||||
multiboot_info.cc \
|
cap_session_component.cc \
|
||||||
ram_session_component.cc \
|
context_area.cc \
|
||||||
ram_session_support.cc \
|
|
||||||
rom_session_component.cc \
|
|
||||||
cpu_session_component.cc \
|
cpu_session_component.cc \
|
||||||
pd_session_component.cc \
|
cpu_session_extension.cc \
|
||||||
|
dataspace_component.cc \
|
||||||
|
dump_alloc.cc \
|
||||||
io_mem_session_component.cc \
|
io_mem_session_component.cc \
|
||||||
io_mem_session_support.cc \
|
io_mem_session_support.cc \
|
||||||
thread.cc \
|
irq_session_component.cc \
|
||||||
thread_bootstrap.cc \
|
main.cc \
|
||||||
thread_start.cc \
|
multiboot_info.cc \
|
||||||
platform_thread.cc \
|
pd_session_component.cc \
|
||||||
platform_pd.cc \
|
pd_session_extension.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
dataspace_component.cc \
|
platform_pd.cc \
|
||||||
|
platform_services.cc \
|
||||||
|
platform_thread.cc \
|
||||||
|
ram_session_component.cc \
|
||||||
|
ram_session_support.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
rm_session_support.cc \
|
rm_session_support.cc \
|
||||||
io_port_session_component.cc \
|
rom_session_component.cc \
|
||||||
irq_session_component.cc \
|
|
||||||
signal_session_component.cc \
|
signal_session_component.cc \
|
||||||
signal_source_component.cc \
|
signal_source_component.cc \
|
||||||
dump_alloc.cc \
|
spin_lock.cc \
|
||||||
context_area.cc \
|
thread.cc \
|
||||||
cap_map.cc \
|
thread_bootstrap.cc \
|
||||||
cap_session_component.cc \
|
thread_start.cc
|
||||||
cpu_session_extension.cc \
|
|
||||||
pd_session_extension.cc \
|
|
||||||
spin_lock.cc
|
|
||||||
|
|
||||||
INC_DIR += $(REP_DIR)/src/core/include \
|
INC_DIR += $(REP_DIR)/src/core/include \
|
||||||
$(GEN_CORE_DIR)/include \
|
$(GEN_CORE_DIR)/include \
|
||||||
$(REP_DIR)/src/base/lock \
|
$(REP_DIR)/src/base/lock \
|
||||||
$(BASE_DIR)/src/base/lock
|
$(BASE_DIR)/src/base/lock
|
||||||
|
|
||||||
vpath main.cc $(GEN_CORE_DIR)
|
vpath context_area.cc $(GEN_CORE_DIR)
|
||||||
vpath multiboot_info.cc $(GEN_CORE_DIR)
|
|
||||||
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath rom_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath pd_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
|
||||||
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
||||||
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
||||||
vpath context_area.cc $(GEN_CORE_DIR)
|
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath thread.cc $(REP_DIR)/src/base/thread
|
vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
||||||
vpath thread_bootstrap.cc $(REP_DIR)/src/base/thread
|
vpath main.cc $(GEN_CORE_DIR)
|
||||||
|
vpath multiboot_info.cc $(GEN_CORE_DIR)
|
||||||
|
vpath pd_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath rom_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath cap_map.cc $(REP_DIR)/src/base/env
|
vpath cap_map.cc $(REP_DIR)/src/base/env
|
||||||
vpath spin_lock.cc $(REP_DIR)/src/base/env
|
vpath spin_lock.cc $(REP_DIR)/src/base/env
|
||||||
|
vpath thread.cc $(REP_DIR)/src/base/thread
|
||||||
|
vpath thread_bootstrap.cc $(REP_DIR)/src/base/thread
|
||||||
vpath %.cc $(REP_DIR)/src/core
|
vpath %.cc $(REP_DIR)/src/core
|
||||||
|
@ -6,5 +6,5 @@ INC_DIR += $(REP_DIR)/src/core/include/arm
|
|||||||
|
|
||||||
LD_TEXT_ADDR = 0x60490000
|
LD_TEXT_ADDR = 0x60490000
|
||||||
|
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/arm
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
include $(PRG_DIR)/../target.inc
|
include $(PRG_DIR)/../target.inc
|
||||||
|
|
||||||
REQUIRES += x86
|
REQUIRES += x86
|
||||||
SRC_CC += x86/platform_x86.cc
|
SRC_CC += io_port_session_component.cc \
|
||||||
|
x86/platform_x86.cc
|
||||||
INC_DIR += $(REP_DIR)/src/core/include/x86
|
INC_DIR += $(REP_DIR)/src/core/include/x86
|
||||||
|
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)/x86
|
||||||
|
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Implementation of the IO_PORT session interface
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2009-10-02
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2009-2012 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "io_port_session_component.h"
|
|
||||||
|
|
||||||
using namespace Genode;
|
|
||||||
|
|
||||||
|
|
||||||
/**************
|
|
||||||
** Port API **
|
|
||||||
**************/
|
|
||||||
|
|
||||||
unsigned char Io_port_session_component::inb(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned short Io_port_session_component::inw(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned Io_port_session_component::inl(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outb(unsigned short address, unsigned char value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outw(unsigned short address, unsigned short value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outl(unsigned short address, unsigned value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
/******************************
|
|
||||||
** Constructor / destructor **
|
|
||||||
******************************/
|
|
||||||
|
|
||||||
Io_port_session_component::Io_port_session_component(Range_allocator *io_port_alloc,
|
|
||||||
const char *args)
|
|
||||||
: _io_port_alloc(io_port_alloc)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::~Io_port_session_component()
|
|
||||||
{ }
|
|
@ -20,6 +20,7 @@ SRC_CC = \
|
|||||||
platform_thread.cc \
|
platform_thread.cc \
|
||||||
platform_pd.cc \
|
platform_pd.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
|
platform_services.cc \
|
||||||
dataspace_component.cc \
|
dataspace_component.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
rm_session_support.cc \
|
rm_session_support.cc \
|
||||||
@ -44,6 +45,7 @@ vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
|||||||
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
||||||
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform_serices.cc $(GEN_CORE_DIR)
|
||||||
vpath %.cc $(REP_DIR)/src/core
|
vpath %.cc $(REP_DIR)/src/core
|
||||||
vpath thread_bootstrap.cc $(BASE_DIR)/src/base/thread
|
vpath thread_bootstrap.cc $(BASE_DIR)/src/base/thread
|
||||||
vpath thread.cc $(BASE_DIR)/src/base/thread
|
vpath thread.cc $(BASE_DIR)/src/base/thread
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Implementation of the IO_PORT session interface
|
|
||||||
* \author Martin Stein
|
|
||||||
* \date 2012-02-12
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2012 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Genode includes */
|
|
||||||
#include <kernel/log.h>
|
|
||||||
|
|
||||||
/* core includes */
|
|
||||||
#include <io_port_session_component.h>
|
|
||||||
|
|
||||||
using namespace Genode;
|
|
||||||
|
|
||||||
|
|
||||||
unsigned char Io_port_session_component::inb(unsigned short address)
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unsigned short Io_port_session_component::inw(unsigned short address)
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unsigned Io_port_session_component::inl(unsigned short address)
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outb(unsigned short address,
|
|
||||||
unsigned char value)
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outw(unsigned short address,
|
|
||||||
unsigned short value)
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outl(unsigned short address, unsigned value)
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::
|
|
||||||
Io_port_session_component(Range_allocator * io_port_alloc,
|
|
||||||
const char * args)
|
|
||||||
: _io_port_alloc(io_port_alloc)
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::~Io_port_session_component()
|
|
||||||
{
|
|
||||||
kernel_log() << __PRETTY_FUNCTION__ << ": Not implemented\n";
|
|
||||||
while (1) ;
|
|
||||||
}
|
|
||||||
|
|
@ -22,27 +22,40 @@ INC_DIR += $(REP_DIR)/src/core/include $(REP_DIR)/include \
|
|||||||
$(BASE_DIR)/include
|
$(BASE_DIR)/include
|
||||||
|
|
||||||
# add C++ sources
|
# add C++ sources
|
||||||
SRC_CC += main.cc _main.cc ram_session_component.cc \
|
SRC_CC += _main.cc \
|
||||||
ram_session_support.cc rom_session_component.cc \
|
console.cc \
|
||||||
pd_session_component.cc io_mem_session_component.cc \
|
cpu_session_component.cc \
|
||||||
io_mem_session_support.cc thread.cc platform_pd.cc platform.cc \
|
cpu_session_support.cc \
|
||||||
platform_thread.cc dataspace_component.cc rm_session_component.cc \
|
dataspace_component.cc \
|
||||||
io_port_session_component.cc \
|
dump_alloc.cc \
|
||||||
irq_session_component.cc signal_session_component.cc \
|
io_mem_session_component.cc \
|
||||||
dump_alloc.cc cpu_session_component.cc \
|
io_mem_session_support.cc \
|
||||||
cpu_session_support.cc console.cc
|
irq_session_component.cc \
|
||||||
|
main.cc \
|
||||||
|
pd_session_component.cc \
|
||||||
|
platform.cc \
|
||||||
|
platform_pd.cc \
|
||||||
|
platform_thread.cc \
|
||||||
|
platform_services.cc \
|
||||||
|
ram_session_component.cc \
|
||||||
|
ram_session_support.cc \
|
||||||
|
rm_session_component.cc \
|
||||||
|
rom_session_component.cc \
|
||||||
|
signal_session_component.cc \
|
||||||
|
thread.cc
|
||||||
|
|
||||||
# declare file locations
|
# declare file locations
|
||||||
vpath _main.cc $(BASE_DIR)/src/platform
|
vpath _main.cc $(BASE_DIR)/src/platform
|
||||||
vpath main.cc $(GEN_CORE_DIR)
|
|
||||||
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath rom_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath pd_session_component.cc $(GEN_CORE_DIR)
|
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
||||||
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
||||||
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
vpath main.cc $(GEN_CORE_DIR)
|
||||||
|
vpath pd_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
|
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath rom_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
||||||
vpath console.cc $(REP_DIR)/src/base
|
vpath console.cc $(REP_DIR)/src/base
|
||||||
vpath % $(REP_DIR)/src/core
|
vpath % $(REP_DIR)/src/core
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Linux-specific IO_PORT service
|
|
||||||
* \author Christian Helmuth
|
|
||||||
* \date 2007-04-18
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2007-2012 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <base/printf.h>
|
|
||||||
#include <root/root.h>
|
|
||||||
|
|
||||||
#include "io_port_session_component.h"
|
|
||||||
|
|
||||||
using namespace Genode;
|
|
||||||
|
|
||||||
|
|
||||||
unsigned char Io_port_session_component::inb(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned short Io_port_session_component::inw(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned Io_port_session_component::inl(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outb(unsigned short address, unsigned char value) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outw(unsigned short address, unsigned short value) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outl(unsigned short address, unsigned value) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::Io_port_session_component(Range_allocator *io_port_alloc,
|
|
||||||
const char *args)
|
|
||||||
: _io_port_alloc(io_port_alloc)
|
|
||||||
{
|
|
||||||
PWRN("no IO_PORT support under Linux (args=\"%s\")", args);
|
|
||||||
_size = 0;
|
|
||||||
throw Root::Invalid_args();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::~Io_port_session_component()
|
|
||||||
{
|
|
||||||
PERR("Implement me, immediately!");
|
|
||||||
}
|
|
@ -7,6 +7,7 @@ GEN_CORE_DIR = $(BASE_DIR)/src/core
|
|||||||
SRC_CC = main.cc \
|
SRC_CC = main.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
platform_thread.cc \
|
platform_thread.cc \
|
||||||
|
platform_services.cc \
|
||||||
ram_session_component.cc \
|
ram_session_component.cc \
|
||||||
ram_session_support.cc \
|
ram_session_support.cc \
|
||||||
rom_session_component.cc \
|
rom_session_component.cc \
|
||||||
@ -14,7 +15,6 @@ SRC_CC = main.cc \
|
|||||||
cpu_session_support.cc \
|
cpu_session_support.cc \
|
||||||
pd_session_component.cc \
|
pd_session_component.cc \
|
||||||
io_mem_session_component.cc \
|
io_mem_session_component.cc \
|
||||||
io_port_session_component.cc \
|
|
||||||
signal_session_component.cc \
|
signal_session_component.cc \
|
||||||
signal_source_component.cc \
|
signal_source_component.cc \
|
||||||
thread.cc \
|
thread.cc \
|
||||||
@ -32,6 +32,7 @@ vpath main.cc $(GEN_CORE_DIR)
|
|||||||
vpath thread.cc $(BASE_DIR)/src/base/thread
|
vpath thread.cc $(BASE_DIR)/src/base/thread
|
||||||
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
||||||
vpath debug.cc $(REP_DIR)/src/base/env
|
vpath debug.cc $(REP_DIR)/src/base/env
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Implementation of the IO_PORT session interface
|
|
||||||
* \author Martin Stein
|
|
||||||
* \date 2010-09-09
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2010-2012 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "io_port_session_component.h"
|
|
||||||
|
|
||||||
using namespace Genode;
|
|
||||||
|
|
||||||
|
|
||||||
/**************
|
|
||||||
** Port API **
|
|
||||||
**************/
|
|
||||||
|
|
||||||
unsigned char Io_port_session_component::inb(unsigned short) { return 0; }
|
|
||||||
unsigned short Io_port_session_component::inw(unsigned short) { return 0; }
|
|
||||||
unsigned Io_port_session_component::inl(unsigned short) { return 0; }
|
|
||||||
|
|
||||||
void Io_port_session_component::outb(unsigned short, unsigned char) { }
|
|
||||||
void Io_port_session_component::outw(unsigned short, unsigned short) { }
|
|
||||||
void Io_port_session_component::outl(unsigned short, unsigned) { }
|
|
||||||
|
|
||||||
|
|
||||||
/******************************
|
|
||||||
** Constructor / destructor **
|
|
||||||
******************************/
|
|
||||||
|
|
||||||
Io_port_session_component::Io_port_session_component(Range_allocator *io_port_alloc,
|
|
||||||
const char *args)
|
|
||||||
: _io_port_alloc(io_port_alloc) { }
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::~Io_port_session_component() { }
|
|
@ -4,49 +4,50 @@ SPEC_BASE_DIR = $(REP_DIR)/src/base
|
|||||||
|
|
||||||
|
|
||||||
SRC_CC = \
|
SRC_CC = \
|
||||||
main.cc \
|
context_area.cc
|
||||||
ram_session_component.cc \
|
core_rm_session.cc \
|
||||||
ram_session_support.cc \
|
|
||||||
rom_session_component.cc \
|
|
||||||
cpu_session_component.cc \
|
cpu_session_component.cc \
|
||||||
pd_session_component.cc \
|
dataspace_component.cc \
|
||||||
|
dump_alloc.cc \
|
||||||
io_mem_session_component.cc \
|
io_mem_session_component.cc \
|
||||||
io_mem_session_support.cc \
|
io_mem_session_support.cc \
|
||||||
thread.cc \
|
irq_session_component.cc \
|
||||||
thread_roottask.cc \
|
main.cc \
|
||||||
thread_bootstrap.cc \
|
pd_session_component.cc \
|
||||||
platform_thread.cc \
|
|
||||||
platform.cc \
|
platform.cc \
|
||||||
dataspace_component.cc \
|
platform_services.cc \
|
||||||
|
platform_thread.cc \
|
||||||
|
ram_session_component.cc \
|
||||||
|
ram_session_support.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
rm_session_support.cc \
|
rm_session_support.cc \
|
||||||
io_port_session_component.cc \
|
rom_session_component.cc \
|
||||||
irq_session_component.cc \
|
|
||||||
signal_session_component.cc \
|
signal_session_component.cc \
|
||||||
signal_source_component.cc \
|
signal_source_component.cc \
|
||||||
core_rm_session.cc \
|
thread.cc \
|
||||||
dump_alloc.cc \
|
thread_bootstrap.cc \
|
||||||
context_area.cc
|
thread_roottask.cc \
|
||||||
|
|
||||||
INC_DIR = $(SPEC_CORE_DIR)/include \
|
INC_DIR = $(SPEC_CORE_DIR)/include \
|
||||||
$(GEN_CORE_DIR)/include
|
$(GEN_CORE_DIR)/include
|
||||||
|
|
||||||
vpath main.cc $(GEN_CORE_DIR)
|
vpath context_area.cc $(SPEC_CORE_DIR)
|
||||||
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath rom_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
vpath cpu_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath pd_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath io_mem_session_support.cc $(SPEC_CORE_DIR)
|
|
||||||
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
|
||||||
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
||||||
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
||||||
vpath context_area.cc $(SPEC_CORE_DIR)
|
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
||||||
vpath platform.cc $(GEN_CORE_DIR)
|
vpath io_mem_session_support.cc $(SPEC_CORE_DIR)
|
||||||
vpath platform_thread.cc $(GEN_CORE_DIR)
|
|
||||||
vpath thread_roottask.cc $(GEN_CORE_DIR)
|
|
||||||
vpath thread_bootstrap.cc $(SPEC_BASE_DIR)/thread
|
|
||||||
vpath thread.cc $(SPEC_BASE_DIR)/thread
|
|
||||||
vpath irq_session_component.cc $(SPEC_CORE_DIR)
|
vpath irq_session_component.cc $(SPEC_CORE_DIR)
|
||||||
|
vpath main.cc $(GEN_CORE_DIR)
|
||||||
|
vpath pd_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform_thread.cc $(GEN_CORE_DIR)
|
||||||
|
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath rom_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath signal_session_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath signal_source_component.cc $(GEN_CORE_DIR)
|
||||||
|
vpath thread.cc $(SPEC_BASE_DIR)/thread
|
||||||
|
vpath thread_bootstrap.cc $(SPEC_BASE_DIR)/thread
|
||||||
|
vpath thread_roottask.cc $(GEN_CORE_DIR)
|
||||||
|
@ -19,6 +19,7 @@ SRC_CC = \
|
|||||||
platform_thread.cc \
|
platform_thread.cc \
|
||||||
platform_pd.cc \
|
platform_pd.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
|
platform_services.cc \
|
||||||
core_mem_alloc.cc \
|
core_mem_alloc.cc \
|
||||||
dataspace_component.cc \
|
dataspace_component.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
@ -51,6 +52,7 @@ vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
|||||||
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
vpath dataspace_component.cc $(GEN_CORE_DIR)
|
||||||
vpath core_mem_alloc.cc $(GEN_CORE_DIR)
|
vpath core_mem_alloc.cc $(GEN_CORE_DIR)
|
||||||
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
vpath dump_alloc.cc $(GEN_CORE_DIR)
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)/x86
|
||||||
vpath context_area.cc $(GEN_CORE_DIR)
|
vpath context_area.cc $(GEN_CORE_DIR)
|
||||||
vpath %.cc $(REP_DIR)/src/core
|
vpath %.cc $(REP_DIR)/src/core
|
||||||
vpath thread.cc $(BASE_DIR)/src/base/thread
|
vpath thread.cc $(BASE_DIR)/src/base/thread
|
||||||
|
@ -21,10 +21,10 @@ SRC_CC = main.cc \
|
|||||||
platform_thread.cc \
|
platform_thread.cc \
|
||||||
platform_pd.cc \
|
platform_pd.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
|
platform_services.cc \
|
||||||
dataspace_component.cc \
|
dataspace_component.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
rm_session_support.cc \
|
rm_session_support.cc \
|
||||||
io_port_session_component.cc \
|
|
||||||
irq_session_component.cc \
|
irq_session_component.cc \
|
||||||
signal_session_component.cc \
|
signal_session_component.cc \
|
||||||
signal_source_component.cc \
|
signal_source_component.cc \
|
||||||
|
31
base-okl4/src/core/x86/platform_x86.cc
Normal file
31
base-okl4/src/core/x86/platform_x86.cc
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* \brief x86-specific platform definitions
|
||||||
|
* \author Stefan Kalkowski
|
||||||
|
* \date 2012-10-02
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Genode Labs GmbH
|
||||||
|
*
|
||||||
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
|
* under the terms of the GNU General Public License version 2.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Genode includes */
|
||||||
|
#include <base/service.h>
|
||||||
|
|
||||||
|
/* core includes */
|
||||||
|
#include <platform.h>
|
||||||
|
#include <core_env.h>
|
||||||
|
#include <io_port_root.h>
|
||||||
|
|
||||||
|
using namespace Genode;
|
||||||
|
|
||||||
|
void Platform::add_local_services(Rpc_entrypoint *e, Sliced_heap *sliced_heap,
|
||||||
|
Core_env *env, Service_registry *local_services)
|
||||||
|
{
|
||||||
|
/* add x86 specific ioport service */
|
||||||
|
static Io_port_root io_port_root(env->cap_session(), io_port_alloc(), sliced_heap);
|
||||||
|
static Local_service io_port_ls(Io_port_session::service_name(), &io_port_root);
|
||||||
|
local_services->insert(&io_port_ls);
|
||||||
|
}
|
@ -2,7 +2,9 @@ include $(PRG_DIR)/../target.inc
|
|||||||
|
|
||||||
REQUIRES += x86
|
REQUIRES += x86
|
||||||
|
|
||||||
SRC_CC += platform_thread_x86.cc
|
SRC_CC += io_port_session_component.cc \
|
||||||
|
platform_thread_x86.cc
|
||||||
|
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
||||||
vpath platform_thread_x86.cc $(GEN_CORE_DIR)/x86
|
vpath platform_services.cc $(GEN_CORE_DIR)/x86
|
||||||
|
vpath platform_thread_x86.cc $(GEN_CORE_DIR)/x86
|
||||||
|
@ -21,10 +21,10 @@ SRC_CC = main.cc \
|
|||||||
platform_thread.cc \
|
platform_thread.cc \
|
||||||
platform_pd.cc \
|
platform_pd.cc \
|
||||||
platform.cc \
|
platform.cc \
|
||||||
|
platform_services.cc \
|
||||||
dataspace_component.cc \
|
dataspace_component.cc \
|
||||||
rm_session_component.cc \
|
rm_session_component.cc \
|
||||||
rm_session_support.cc \
|
rm_session_support.cc \
|
||||||
io_port_session_component.cc \
|
|
||||||
irq_session_component.cc \
|
irq_session_component.cc \
|
||||||
signal_session_component.cc \
|
signal_session_component.cc \
|
||||||
signal_source_component.cc \
|
signal_source_component.cc \
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
include $(PRG_DIR)/../target.inc
|
include $(PRG_DIR)/../target.inc
|
||||||
|
|
||||||
REQUIRES += x86
|
REQUIRES += x86
|
||||||
SRC_CC += platform_x86.cc
|
SRC_CC += io_port_session_component.cc \
|
||||||
|
platform_x86.cc
|
||||||
|
|
||||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
vpath io_port_session_component.cc $(GEN_CORE_DIR)/x86
|
||||||
|
vpath platform_services.cc $(GEN_CORE_DIR)/x86
|
||||||
|
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Dummy implementation of the IO_PORT session interface
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2007-09-27
|
|
||||||
*
|
|
||||||
* On ARM, port I/O does not exist.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2007-2012 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//#include <util/string.h>
|
|
||||||
//#include <util/arg_string.h>
|
|
||||||
|
|
||||||
#include "io_port_session_component.h"
|
|
||||||
|
|
||||||
using namespace Genode;
|
|
||||||
|
|
||||||
|
|
||||||
/**************
|
|
||||||
** Port API **
|
|
||||||
**************/
|
|
||||||
|
|
||||||
unsigned char Io_port_session_component::inb(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned short Io_port_session_component::inw(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
unsigned Io_port_session_component::inl(unsigned short address) {
|
|
||||||
return 0; }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outb(unsigned short address, unsigned char value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outw(unsigned short address, unsigned short value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
void Io_port_session_component::outl(unsigned short address, unsigned value)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
/******************************
|
|
||||||
** Constructor / destructor **
|
|
||||||
******************************/
|
|
||||||
|
|
||||||
Io_port_session_component::Io_port_session_component(Range_allocator *io_port_alloc,
|
|
||||||
const char *args)
|
|
||||||
: _io_port_alloc(io_port_alloc)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
Io_port_session_component::~Io_port_session_component()
|
|
||||||
{ }
|
|
37
base/src/core/include/platform_services.h
Normal file
37
base/src/core/include/platform_services.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* \brief Platform-specific services
|
||||||
|
* \author Stefan Kalkowski
|
||||||
|
* \date 2012-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Genode Labs GmbH
|
||||||
|
*
|
||||||
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
|
* under the terms of the GNU General Public License version 2.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CORE__INCLUDE__PLATFORM_SERVICES_H_
|
||||||
|
#define _CORE__INCLUDE__PLATFORM_SERVICES_H_
|
||||||
|
|
||||||
|
namespace Genode {
|
||||||
|
|
||||||
|
class Rpc_entrypoint;
|
||||||
|
class Sliced_heap;
|
||||||
|
class Service_registry;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register platform-specific services at entrypoint, and service
|
||||||
|
* registry
|
||||||
|
*
|
||||||
|
* \param ep entrypoint used for session components of platform-services
|
||||||
|
* \param md metadata allocator for session components
|
||||||
|
* \param reg registry where to add platform-specific services
|
||||||
|
*/
|
||||||
|
void platform_add_local_services(Rpc_entrypoint *ep,
|
||||||
|
Sliced_heap *md,
|
||||||
|
Service_registry *reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _CORE__INCLUDE__PLATFORM_SERVICES_H_ */
|
@ -30,9 +30,9 @@
|
|||||||
#include <pd_root.h>
|
#include <pd_root.h>
|
||||||
#include <log_root.h>
|
#include <log_root.h>
|
||||||
#include <io_mem_root.h>
|
#include <io_mem_root.h>
|
||||||
#include <io_port_root.h>
|
|
||||||
#include <irq_root.h>
|
#include <irq_root.h>
|
||||||
#include <signal_root.h>
|
#include <signal_root.h>
|
||||||
|
#include <platform_services.h>
|
||||||
|
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
|
|
||||||
@ -173,7 +173,6 @@ int main()
|
|||||||
static Log_root log_root (e, &sliced_heap);
|
static Log_root log_root (e, &sliced_heap);
|
||||||
static Io_mem_root io_mem_root (e, e, platform()->io_mem_alloc(),
|
static Io_mem_root io_mem_root (e, e, platform()->io_mem_alloc(),
|
||||||
platform()->ram_alloc(), &sliced_heap);
|
platform()->ram_alloc(), &sliced_heap);
|
||||||
static Io_port_root io_port_root (core_env()->cap_session(), platform()->io_port_alloc(), &sliced_heap);
|
|
||||||
static Irq_root irq_root (core_env()->cap_session(),
|
static Irq_root irq_root (core_env()->cap_session(),
|
||||||
platform()->irq_alloc(), &sliced_heap);
|
platform()->irq_alloc(), &sliced_heap);
|
||||||
static Signal_root signal_root (&sliced_heap, core_env()->cap_session());
|
static Signal_root signal_root (&sliced_heap, core_env()->cap_session());
|
||||||
@ -191,7 +190,6 @@ int main()
|
|||||||
Local_service(Pd_session::service_name(), &pd_root),
|
Local_service(Pd_session::service_name(), &pd_root),
|
||||||
Local_service(Log_session::service_name(), &log_root),
|
Local_service(Log_session::service_name(), &log_root),
|
||||||
Local_service(Io_mem_session::service_name(), &io_mem_root),
|
Local_service(Io_mem_session::service_name(), &io_mem_root),
|
||||||
Local_service(Io_port_session::service_name(), &io_port_root),
|
|
||||||
Local_service(Irq_session::service_name(), &irq_root),
|
Local_service(Irq_session::service_name(), &irq_root),
|
||||||
Local_service(Signal_session::service_name(), &signal_root)
|
Local_service(Signal_session::service_name(), &signal_root)
|
||||||
};
|
};
|
||||||
@ -200,6 +198,9 @@ int main()
|
|||||||
for (unsigned i = 0; i < sizeof(ls) / sizeof(Local_service); i++)
|
for (unsigned i = 0; i < sizeof(ls) / sizeof(Local_service); i++)
|
||||||
local_services.insert(&ls[i]);
|
local_services.insert(&ls[i]);
|
||||||
|
|
||||||
|
/* make platform-specific services known to service pool */
|
||||||
|
platform_add_local_services(e, &sliced_heap, &local_services);
|
||||||
|
|
||||||
PDBG("--- start init ---");
|
PDBG("--- start init ---");
|
||||||
|
|
||||||
/* obtain ROM session with init binary */
|
/* obtain ROM session with init binary */
|
||||||
|
19
base/src/core/platform_services.cc
Normal file
19
base/src/core/platform_services.cc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* \brief Dummy implemntation of platform-specific services
|
||||||
|
* \author Stefan Kalkowski
|
||||||
|
* \date 2012-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Genode Labs GmbH
|
||||||
|
*
|
||||||
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
|
* under the terms of the GNU General Public License version 2.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* core includes */
|
||||||
|
#include <platform_services.h>
|
||||||
|
|
||||||
|
|
||||||
|
void Genode::platform_add_local_services(Rpc_entrypoint*, Sliced_heap*,
|
||||||
|
Service_registry*) { }
|
36
base/src/core/x86/platform_services.cc
Normal file
36
base/src/core/x86/platform_services.cc
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* \brief Platform specific services for x86
|
||||||
|
* \author Stefan Kalkowski
|
||||||
|
* \date 2012-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Genode Labs GmbH
|
||||||
|
*
|
||||||
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
|
* under the terms of the GNU General Public License version 2.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Genode includes */
|
||||||
|
#include <base/service.h>
|
||||||
|
|
||||||
|
/* core includes */
|
||||||
|
#include <core_env.h>
|
||||||
|
#include <platform.h>
|
||||||
|
#include <platform_services.h>
|
||||||
|
#include <io_port_root.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add x86 specific ioport service
|
||||||
|
*/
|
||||||
|
void Genode::platform_add_local_services(Rpc_entrypoint*,
|
||||||
|
Sliced_heap *sliced_heap,
|
||||||
|
Service_registry *local_services)
|
||||||
|
{
|
||||||
|
static Io_port_root io_port_root(core_env()->cap_session(),
|
||||||
|
platform()->io_port_alloc(), sliced_heap);
|
||||||
|
static Local_service io_port_ls(Io_port_session::service_name(),
|
||||||
|
&io_port_root);
|
||||||
|
local_services->insert(&io_port_ls);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user