mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-21 22:47:50 +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 \
|
||||
platform_thread.cc \
|
||||
platform_pd.cc \
|
||||
platform_services.cc \
|
||||
platform.cc \
|
||||
dataspace_component.cc \
|
||||
rm_session_component.cc \
|
||||
rm_session_support.cc \
|
||||
io_port_session_component.cc \
|
||||
irq_session_component.cc \
|
||||
signal_session_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 io_mem_session_component.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_source_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.cc $(BASE_DIR)/src/base/thread
|
||||
vpath utcb.cc $(REP_DIR)/src/base/env
|
||||
|
||||
|
@ -4,4 +4,5 @@ REQUIRES += arm
|
||||
SRC_CC += platform_arm.cc
|
||||
|
||||
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 \
|
||||
platform_thread.cc \
|
||||
platform_pd.cc \
|
||||
platform_services.cc \
|
||||
platform.cc \
|
||||
dataspace_component.cc \
|
||||
rm_session_component.cc \
|
||||
|
@ -4,4 +4,5 @@ REQUIRES += x86
|
||||
SRC_CC += platform_x86.cc
|
||||
|
||||
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
|
||||
INC_DIR += $(REP_DIR)/src/core/include/arm
|
||||
|
||||
|
||||
vpath io_port_session_component.cc $(GEN_CORE_DIR)/arm
|
||||
|
||||
vpath platform_services.cc $(GEN_CORE_DIR)
|
||||
|
@ -6,5 +6,5 @@ INC_DIR += $(REP_DIR)/src/core/include/arm
|
||||
|
||||
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
|
||||
|
||||
SRC_CC = main.cc \
|
||||
multiboot_info.cc \
|
||||
ram_session_component.cc \
|
||||
ram_session_support.cc \
|
||||
rom_session_component.cc \
|
||||
SRC_CC = cap_map.cc \
|
||||
cap_session_component.cc \
|
||||
context_area.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_support.cc \
|
||||
thread.cc \
|
||||
thread_bootstrap.cc \
|
||||
thread_start.cc \
|
||||
platform_thread.cc \
|
||||
platform_pd.cc \
|
||||
irq_session_component.cc \
|
||||
main.cc \
|
||||
multiboot_info.cc \
|
||||
pd_session_component.cc \
|
||||
pd_session_extension.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_support.cc \
|
||||
io_port_session_component.cc \
|
||||
irq_session_component.cc \
|
||||
rom_session_component.cc \
|
||||
signal_session_component.cc \
|
||||
signal_source_component.cc \
|
||||
dump_alloc.cc \
|
||||
context_area.cc \
|
||||
cap_map.cc \
|
||||
cap_session_component.cc \
|
||||
cpu_session_extension.cc \
|
||||
pd_session_extension.cc \
|
||||
spin_lock.cc
|
||||
spin_lock.cc \
|
||||
thread.cc \
|
||||
thread_bootstrap.cc \
|
||||
thread_start.cc
|
||||
|
||||
INC_DIR += $(REP_DIR)/src/core/include \
|
||||
$(GEN_CORE_DIR)/include \
|
||||
$(REP_DIR)/src/base/lock \
|
||||
$(BASE_DIR)/src/base/lock
|
||||
|
||||
vpath main.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 context_area.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 dump_alloc.cc $(GEN_CORE_DIR)
|
||||
vpath context_area.cc $(GEN_CORE_DIR)
|
||||
vpath thread.cc $(REP_DIR)/src/base/thread
|
||||
vpath thread_bootstrap.cc $(REP_DIR)/src/base/thread
|
||||
vpath io_mem_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath io_mem_session_support.cc $(GEN_CORE_DIR)
|
||||
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 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
|
||||
|
@ -6,5 +6,5 @@ INC_DIR += $(REP_DIR)/src/core/include/arm
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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_pd.cc \
|
||||
platform.cc \
|
||||
platform_services.cc \
|
||||
dataspace_component.cc \
|
||||
rm_session_component.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_source_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 thread_bootstrap.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
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += main.cc _main.cc ram_session_component.cc \
|
||||
ram_session_support.cc rom_session_component.cc \
|
||||
pd_session_component.cc io_mem_session_component.cc \
|
||||
io_mem_session_support.cc thread.cc platform_pd.cc platform.cc \
|
||||
platform_thread.cc dataspace_component.cc rm_session_component.cc \
|
||||
io_port_session_component.cc \
|
||||
irq_session_component.cc signal_session_component.cc \
|
||||
dump_alloc.cc cpu_session_component.cc \
|
||||
cpu_session_support.cc console.cc
|
||||
SRC_CC += _main.cc \
|
||||
console.cc \
|
||||
cpu_session_component.cc \
|
||||
cpu_session_support.cc \
|
||||
dataspace_component.cc \
|
||||
dump_alloc.cc \
|
||||
io_mem_session_component.cc \
|
||||
io_mem_session_support.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
|
||||
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 pd_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath rm_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath dataspace_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 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 console.cc $(REP_DIR)/src/base
|
||||
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 \
|
||||
platform.cc \
|
||||
platform_thread.cc \
|
||||
platform_services.cc \
|
||||
ram_session_component.cc \
|
||||
ram_session_support.cc \
|
||||
rom_session_component.cc \
|
||||
@ -14,7 +15,6 @@ SRC_CC = main.cc \
|
||||
cpu_session_support.cc \
|
||||
pd_session_component.cc \
|
||||
io_mem_session_component.cc \
|
||||
io_port_session_component.cc \
|
||||
signal_session_component.cc \
|
||||
signal_source_component.cc \
|
||||
thread.cc \
|
||||
@ -32,6 +32,7 @@ vpath main.cc $(GEN_CORE_DIR)
|
||||
vpath thread.cc $(BASE_DIR)/src/base/thread
|
||||
vpath ram_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_source_component.cc $(GEN_CORE_DIR)
|
||||
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 = \
|
||||
main.cc \
|
||||
ram_session_component.cc \
|
||||
ram_session_support.cc \
|
||||
rom_session_component.cc \
|
||||
context_area.cc
|
||||
core_rm_session.cc \
|
||||
cpu_session_component.cc \
|
||||
pd_session_component.cc \
|
||||
dataspace_component.cc \
|
||||
dump_alloc.cc \
|
||||
io_mem_session_component.cc \
|
||||
io_mem_session_support.cc \
|
||||
thread.cc \
|
||||
thread_roottask.cc \
|
||||
thread_bootstrap.cc \
|
||||
platform_thread.cc \
|
||||
irq_session_component.cc \
|
||||
main.cc \
|
||||
pd_session_component.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_support.cc \
|
||||
io_port_session_component.cc \
|
||||
irq_session_component.cc \
|
||||
rom_session_component.cc \
|
||||
signal_session_component.cc \
|
||||
signal_source_component.cc \
|
||||
core_rm_session.cc \
|
||||
dump_alloc.cc \
|
||||
context_area.cc
|
||||
thread.cc \
|
||||
thread_bootstrap.cc \
|
||||
thread_roottask.cc \
|
||||
|
||||
INC_DIR = $(SPEC_CORE_DIR)/include \
|
||||
$(GEN_CORE_DIR)/include
|
||||
$(GEN_CORE_DIR)/include
|
||||
|
||||
vpath main.cc $(GEN_CORE_DIR)
|
||||
vpath ram_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath rom_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath context_area.cc $(SPEC_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 dump_alloc.cc $(GEN_CORE_DIR)
|
||||
vpath context_area.cc $(SPEC_CORE_DIR)
|
||||
vpath platform.cc $(GEN_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 io_mem_session_component.cc $(GEN_CORE_DIR)
|
||||
vpath io_mem_session_support.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_pd.cc \
|
||||
platform.cc \
|
||||
platform_services.cc \
|
||||
core_mem_alloc.cc \
|
||||
dataspace_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 core_mem_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 %.cc $(REP_DIR)/src/core
|
||||
vpath thread.cc $(BASE_DIR)/src/base/thread
|
||||
|
@ -21,10 +21,10 @@ SRC_CC = main.cc \
|
||||
platform_thread.cc \
|
||||
platform_pd.cc \
|
||||
platform.cc \
|
||||
platform_services.cc \
|
||||
dataspace_component.cc \
|
||||
rm_session_component.cc \
|
||||
rm_session_support.cc \
|
||||
io_port_session_component.cc \
|
||||
irq_session_component.cc \
|
||||
signal_session_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
|
||||
|
||||
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 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_pd.cc \
|
||||
platform.cc \
|
||||
platform_services.cc \
|
||||
dataspace_component.cc \
|
||||
rm_session_component.cc \
|
||||
rm_session_support.cc \
|
||||
io_port_session_component.cc \
|
||||
irq_session_component.cc \
|
||||
signal_session_component.cc \
|
||||
signal_source_component.cc \
|
||||
|
@ -1,7 +1,9 @@
|
||||
include $(PRG_DIR)/../target.inc
|
||||
|
||||
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 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 <log_root.h>
|
||||
#include <io_mem_root.h>
|
||||
#include <io_port_root.h>
|
||||
#include <irq_root.h>
|
||||
#include <signal_root.h>
|
||||
#include <platform_services.h>
|
||||
|
||||
using namespace Genode;
|
||||
|
||||
@ -173,7 +173,6 @@ int main()
|
||||
static Log_root log_root (e, &sliced_heap);
|
||||
static Io_mem_root io_mem_root (e, e, platform()->io_mem_alloc(),
|
||||
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(),
|
||||
platform()->irq_alloc(), &sliced_heap);
|
||||
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(Log_session::service_name(), &log_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(Signal_session::service_name(), &signal_root)
|
||||
};
|
||||
@ -200,6 +198,9 @@ int main()
|
||||
for (unsigned i = 0; i < sizeof(ls) / sizeof(Local_service); 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 ---");
|
||||
|
||||
/* 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