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

Zygoma::ia32::MPS::FloatingPointer Class Reference
[Intel Multiprocessor Specification]

#include <mps.h>

Collaboration diagram for Zygoma::ia32::MPS::FloatingPointer:

Collaboration graph
[legend]
List of all members.

Detailed Description

The root of the MPS configuration data.

This structire is located through an autodiscovery process detailed in mps_page_autodicovery. If it is not found through that process, the hardware is not MPS compliant and the boottime autodiscovery must fall back to legacy detection schemes.

Todo:
Complete this.


Public Member Functions

ConfigTableHeaderconfigTableHeader () const
 Gets a pointer to the MP configuration table.
u08 configType () const
 Gets the MP system configuration type.
bool imcrIsPresent () const
 Indicates if the IMCR (interrupt mode configuration register) is present or not.

Static Public Member Functions

static const FloatingPointerlocateMPFP ()
 Tries to locate the Multiprocessor Spec Floating Pointer structure.

Static Public Attributes

static const int kSIGNATURE_LENGTH = 4
static const u08 kSIGNATURE [kSIGNATURE_LENGTH]
 The signature of a MPFP.
static const FloatingPointerkNOT_FOUND = 0
 The value returned when locateMPFP fails.


Member Function Documentation

ConfigTableHeader* Zygoma::ia32::MPS::FloatingPointer::configTableHeader  )  const [inline]
 

Gets a pointer to the MP configuration table.

Todo:
: convert this to return a reference.

u08 Zygoma::ia32::MPS::FloatingPointer::configType  )  const [inline]
 

Gets the MP system configuration type.

A non-zero value indicates one of the MPS default configurations, a zero value indicates the configuration table is present and will describe the actual configuration.

bool Zygoma::ia32::MPS::FloatingPointer::imcrIsPresent  )  const [inline]
 

Indicates if the IMCR (interrupt mode configuration register) is present or not.

If present, the system can be put into PIC mode, otherwise it would be using Virtual Wire Mode by default (see the documentation in apic.h).

const FloatingPointer * FloatingPointer::locateMPFP  )  [static]
 

Tries to locate the Multiprocessor Spec Floating Pointer structure.

This function performs autodiscovery of the MPS Floating Pointer structure, which is used to determine whether the system uses a default or a custom MPS configuration. If there is no MPFP table found at all, the system does not support the Intel MultiProcessor Specification.

This version doesn't check the EBDA, since I can't figure out what it's supposed to do.

Returns:
FloatingPointer::kNOT_FOUND if the MPFP was not found, a pointer to a valid object otherwise.

Here is the call graph for this function:


Member Data Documentation

const FloatingPointer * FloatingPointer::kNOT_FOUND = 0 [static]
 

The value returned when locateMPFP fails.

const u08 FloatingPointer::kSIGNATURE [static]
 

Initial value:

  { '_', 'M', 'P', '_' }
The signature of a MPFP.

const int Zygoma::ia32::MPS::FloatingPointer::kSIGNATURE_LENGTH = 4 [static]
 


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