Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Zygoma::ia32::IDT Class Reference
[Intel IA32 (32-bit) Architecture]

#include <idt.h>

List of all members.


Detailed Description

An interrupt descriptor table implements a vectored interrupt dispatch mechanism.

The interrupt table is arranged into the following sections.

0x00 - 0x1f
Intel reserved traps and exceptions.
0x20 - 0x5f
Hardware interrupt (IRQ) remapping vectors.
0x60 - 0x6f
Local APIC vectors.
0x60LINT0local interrupt 0
0x61LINT1local interrupt 1
0x62ERRORAPIC error notification
0x63PCINTperformance monitoring counter
0x64TIMERAPIC timer
0x65RFU65reserved for future use
0x66RFU66reserved for future use
0x67RFU67reserved for future use
0x6fSPIVspurious interrupt
0x70 - 0x7f
Zygoma software traps. Only the first 8 are currently initialized.
0x70SYSCALL0userland entry point
0x71SYSCALL1reserved for future use
0x72SYSCALL2reserved for future use
0x73SYSCALL3reserved for future use
0x74SYSCALL4reserved for future use
0x75SYSCALL5reserved for future use
0x76SYSCALL6reserved for future use
0x77SYSCALL7reserved for future use


Public Types

typedef InterruptGate value_type
typedef InterruptGatereference
typedef const InterruptGateconst_reference
typedef InternalIdt::iterator iterator
typedef InternalIdt::const_iterator const_iterator
typedef std::ptrdiff_t difference_type
typedef std::size_t size_type

Public Member Functions

 IDT (int size)
 Allocates an IDT with size entires (all default initialized) and sets the current processor's interrupt descriptor table register (IDTR) with the base address and limit of the new table.
void insert (unsigned int irq, const InterruptGate &)
 Inserts a new interrupt/trap entry in the IDT at slot irq.
void dispatchInterrupt (int interruptNumber)
 Invokes all the chained interrupt trampolines until one has volunteered to handle the interrupt or the end of teh chain is reached.
void disableInterrupts ()
 Disables interrupts for the CPU.
void enableInterrupts ()
 Enables interrupts for the CPU.
std::ostream & printStream (std::ostream &ostr) const
 Dumps the IDT to an output stream.
Capacity
*size_type size () const
 Gets the capacity of the Idt.
bool empty () const
 Indicates that the Idt contains no memory.
Iteration
*iterator begin ()
const_iterator begin () const
iterator end ()
const_iterator end () const


Member Typedef Documentation

typedef InternalIdt::const_iterator Zygoma::ia32::IDT::const_iterator
 

typedef const InterruptGate& Zygoma::ia32::IDT::const_reference
 

typedef std::ptrdiff_t Zygoma::ia32::IDT::difference_type
 

typedef InternalIdt::iterator Zygoma::ia32::IDT::iterator
 

typedef InterruptGate& Zygoma::ia32::IDT::reference
 

typedef std::size_t Zygoma::ia32::IDT::size_type
 

typedef InterruptGate Zygoma::ia32::IDT::value_type
 


Constructor & Destructor Documentation

IDT::IDT int  size  ) 
 

Allocates an IDT with size entires (all default initialized) and sets the current processor's interrupt descriptor table register (IDTR) with the base address and limit of the new table.

Todo:
move this into its own header file and class

Here is the call graph for this function:


Member Function Documentation

const_iterator Zygoma::ia32::IDT::begin  )  const [inline]
 

* iterator Zygoma::ia32::IDT::begin  )  [inline]
 

void IDT::disableInterrupts  ) 
 

Disables interrupts for the CPU.

void IDT::dispatchInterrupt int  interruptNumber  ) 
 

Invokes all the chained interrupt trampolines until one has volunteered to handle the interrupt or the end of teh chain is reached.

Parameters:
interruptNumber [IN]

bool Zygoma::ia32::IDT::empty  )  const [inline]
 

Indicates that the Idt contains no memory.

Returns:
true if the capacity of the Idt is zero, false otherwise.

void IDT::enableInterrupts  ) 
 

Enables interrupts for the CPU.

const_iterator Zygoma::ia32::IDT::end  )  const [inline]
 

iterator Zygoma::ia32::IDT::end  )  [inline]
 

void IDT::insert unsigned int  irq,
const InterruptGate gate
 

Inserts a new interrupt/trap entry in the IDT at slot irq.

If irq is out of range, this function does nothing.

std::ostream & IDT::printStream std::ostream &  ostr  )  const
 

Dumps the IDT to an output stream.

This function is aimed at debugging.

Parameters:
ostr [INOUT] The stream to which the contents of the Interrupt Descriptor Table are to be dumped.
Returns:
a reference to te output stream containing the dumped interrupt descriptor table.

* size_type Zygoma::ia32::IDT::size  )  const [inline]
 

Gets the capacity of the Idt.

Returns:
the number of bytes in the Idt.


The documentation for this class was generated from the following files:
Generated on Fri Sep 2 10:45:12 2005 for zygoma by doxygen 1.4.2