The Pedigree Project
0.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
src
system
include
pedigree
kernel
processor
PageFaultHandler.h
1
/*
2
* Copyright (c) 2008-2014, Pedigree Developers
3
*
4
* Please see the CONTRIB file in the root of the source tree for a full
5
* list of contributors.
6
*
7
* Permission to use, copy, modify, and distribute this software for any
8
* purpose with or without fee is hereby granted, provided that the above
9
* copyright notice and this permission notice appear in all copies.
10
*
11
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18
*/
19
20
#ifndef KERNEL_CORE_PROCESSOR_PAGEFAULTHANDLER_H_
21
#define KERNEL_CORE_PROCESSOR_PAGEFAULTHANDLER_H_
22
23
#include "pedigree/kernel/compiler.h"
24
#include "pedigree/kernel/processor/InterruptHandler.h"
25
#include "pedigree/kernel/processor/state_forward.h"
26
#include "pedigree/kernel/processor/types.h"
27
#include "pedigree/kernel/utilities/List.h"
28
32
class
EXPORTED_PUBLIC
MemoryTrapHandler
33
{
34
public
:
35
virtual
~
MemoryTrapHandler
();
36
42
virtual
bool
43
trap(InterruptState &state, uintptr_t address,
bool
bIsWrite) = 0;
44
};
45
47
class
PageFaultHandler
:
private
InterruptHandler
48
{
49
public
:
52
inline
static
PageFaultHandler
&
instance
()
53
{
54
return
m_Instance;
55
}
56
59
bool
initialise();
60
62
void
registerHandler
(
MemoryTrapHandler
*pHandler)
63
{
64
m_Handlers.pushBack(pHandler);
65
}
66
67
//
68
// InterruptHandler interface.
69
//
70
virtual
void
interrupt(
size_t
interruptNumber, InterruptState &state);
71
72
private
:
74
PageFaultHandler
()
INITIALISATION_ONLY
;
75
78
PageFaultHandler
(
const
PageFaultHandler
&);
79
80
List<MemoryTrapHandler *>
m_Handlers;
81
83
EXPORTED_PUBLIC
static
PageFaultHandler
m_Instance
;
84
};
85
88
#endif
/* KERNEL_CORE_PROCESSOR_X86_PAGEFAULTHANDLER_H_ */
EXPORTED_PUBLIC
#define EXPORTED_PUBLIC
Definition:
system/include/pedigree/kernel/compiler.h:78
INITIALISATION_ONLY
#define INITIALISATION_ONLY
Definition:
system/include/pedigree/kernel/compiler.h:98
MemoryTrapHandler
Definition:
PageFaultHandler.h:32
PageFaultHandler::instance
static PageFaultHandler & instance()
Definition:
PageFaultHandler.h:52
List< MemoryTrapHandler * >
PageFaultHandler::registerHandler
void registerHandler(MemoryTrapHandler *pHandler)
Definition:
PageFaultHandler.h:62
PageFaultHandler
Definition:
PageFaultHandler.h:47
InterruptHandler
Abstract base class for interrupt-handlers.
Definition:
InterruptHandler.h:32
PageFaultHandler::m_Instance
static EXPORTED_PUBLIC PageFaultHandler m_Instance
Definition:
PageFaultHandler.h:83
Generated on Fri Jan 24 2020 06:46:15 for The Pedigree Project by
1.8.11