The Pedigree Project  0.1
include/pedigree/kernel/processor/InterruptManager.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_PROCESSOR_INTERRUPTMANAGER_H
21 #define KERNEL_PROCESSOR_INTERRUPTMANAGER_H
22 
23 #include "pedigree/kernel/compiler.h"
24 #include "pedigree/kernel/processor/types.h"
25 
26 class InterruptHandler;
27 
35 {
36  public:
39  static InterruptManager &instance();
44  virtual bool registerInterruptHandler(
45  size_t nInterruptNumber, InterruptHandler *pHandler) = 0;
46 
47 #if defined(DEBUGGER)
48 
53  size_t nInterruptNumber, InterruptHandler *pHandler) = 0;
56  virtual size_t getBreakpointInterruptNumber() PURE = 0;
59  virtual size_t getDebugInterruptNumber() PURE = 0;
60 #endif
61 
62  protected:
66  virtual ~InterruptManager();
67 
68  private:
75 };
76 
79 #endif
virtual bool registerInterruptHandler(size_t nInterruptNumber, InterruptHandler *pHandler)=0
virtual bool registerInterruptHandlerDebugger(size_t nInterruptNumber, InterruptHandler *pHandler)=0
Handles interrupts and interrupt registrations from kernel components.
virtual size_t getDebugInterruptNumber() PURE=0
InterruptManager & operator=(const InterruptManager &)
Abstract base class for interrupt-handlers.
virtual ~InterruptManager()
virtual size_t getBreakpointInterruptNumber() PURE=0
static InterruptManager & instance()