Enable routing of thread events to signal contexts via Kernel::route_thread_event. Replace Kernel::set_pager by Kernel::route_thread_event. In base-hw a pager object is a signal context and a pager activation is a signal receiver. If a thread wants to start communicating its page faults via a pager object, the thread calls Kernel::route_thread_event with its thread ID, event ID "FAULT", and the signal context ID of the pager object. If a pager activation wants to start handling page faults of a pager object, the pager activation assigns the corresponding signal context to its signal receiver. If a pager activation wants to stop handling page faults of a pager object, the pager activation dissolves the corresponding signal context from its signal receiver. If a thread wants to start communicating its page faults via a pager object, the thread calls Kernel::route_thread_event with its thread ID, event ID "FAULT", and the invalid signal context ID. Remove Kernel::resume_faulter. Move all page fault related code from generic kernel sources to CPU specific cpu_support.h and cpu_support.cc. fix #935
42 lines
763 B
C++
42 lines
763 B
C++
/*
|
|
* \brief CPU specific support for base-hw
|
|
* \author Martin Stein
|
|
* \date 2013-11-13
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2013 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 <kernel/thread_event.h>
|
|
|
|
namespace Kernel
|
|
{
|
|
/**
|
|
* CPU specific parts of a kernel thread-object
|
|
*/
|
|
class Thread_cpu_support;
|
|
}
|
|
|
|
class Kernel::Thread_cpu_support
|
|
{
|
|
protected:
|
|
|
|
Thread_event _fault;
|
|
addr_t _fault_tlb;
|
|
addr_t _fault_addr;
|
|
addr_t _fault_writes;
|
|
addr_t _fault_signal;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* \param t generic part of kernel thread-object
|
|
*/
|
|
Thread_cpu_support(Thread * const t);
|
|
};
|