The Pedigree Project 0.1
Modules | Classes | Macros | Typedefs | Enumerations | Functions
processor-specifc kernel

processor-specific kernel interface More...

+ Collaboration diagram for processor-specifc kernel:

Modules

 x86
 x86 processor-specific kernel
 
 x64
 x64 processor-specific kernel
 
 x86-common
 x86-common processor-specific kernel
 

Classes

class  DisassemblerBase
 
class  InterruptHandler
 Abstract base class for interrupt-handlers. More...
 
class  InterruptManager
 Handles interrupts and interrupt registrations from kernel components. More...
 
class  IoBase
 Abstrace base class for hardware I/O capabilities. More...
 
class  IoPort
 I/O port range. More...
 
class  IoPortManager
 Manages hardware I/O port (de)allocations. More...
 
class  MemoryMappedIo
 Memory mapped I/O range. More...
 
class  MemoryRegion
 Special memory entity in the kernel's virtual address space. More...
 
class  NMFaultHandler
 
class  MemoryTrapHandler
 
class  PageFaultHandler
 
class  PhysicalMemoryManager
 
class  TlbInvalidationGuard
 
class  ProcessorBase
 
class  StackFrameBase
 
class  SyscallHandler
 
class  SyscallManager
 
class  VirtualAddressSpace
 

Macros

#define DEBUG_BREAKPOINT_0   0x01
 Defines for debug status flags.
 
#define DEBUG_BREAKPOINT_1   0x02
 
#define DEBUG_BREAKPOINT_2   0x04
 
#define DEBUG_BREAKPOINT_3   0x08
 
#define DEBUG_REG_ACCESS    0x2000
 
#define DEBUG_SINGLE_STEP    0x4000
 
#define DEBUG_TASK_SWITCH   0x8000
 
#define _SSIZE_T_DEFINED
 
#define _SIZE_T_DEFINED
 

Typedefs

typedef size_t ProcessorId
 

Enumerations

enum class  DeviceHardIrqOperation {
  Schedule , SemaphoreAcquire , SemaphoreRelease , WaitQueueAccess ,
  HeapAllocate , HeapFree
}
 
enum class  TlbInvalidationResult {
  Success , InvalidContext , UnsupportedTopology , SerialisationTimedOut ,
  SubmissionFailed , AcknowledgementTimedOut , DrainTimedOut
}
 

Functions

void apMain () NORETURN
 
typedef PROCESSOR_SPECIFIC_NAME (ProcessorInformation) ProcessorInformation
 
typedef PROCESSOR_SPECIFIC_NAME (StackFrame) StackFrame
 
class PROCESSOR_SPECIFIC_NAME (InterruptState)
 
class PROCESSOR_SPECIFIC_NAME (SyscallState)
 
class PROCESSOR_SPECIFIC_NAME (ProcessorState)
 
class PROCESSOR_SPECIFIC_NAME (SchedulerState)
 
typedef PROCESSOR_SPECIFIC_NAME (int8_t) int8_t
 
typedef PROCESSOR_SPECIFIC_NAME (uint8_t) uint8_t
 
typedef PROCESSOR_SPECIFIC_NAME (int16_t) int16_t
 
typedef PROCESSOR_SPECIFIC_NAME (uint16_t) uint16_t
 
typedef PROCESSOR_SPECIFIC_NAME (int32_t) int32_t
 
typedef PROCESSOR_SPECIFIC_NAME (uint32_t) uint32_t
 
typedef PROCESSOR_SPECIFIC_NAME (int64_t) int64_t
 
typedef PROCESSOR_SPECIFIC_NAME (uint64_t) uint64_t
 
typedef PROCESSOR_SPECIFIC_NAME (intptr_t) intptr_t
 
typedef PROCESSOR_SPECIFIC_NAME (uintptr_t) uintptr_t
 
typedef PROCESSOR_SPECIFIC_NAME (physical_uintptr_t) physical_uintptr_t
 
typedef PROCESSOR_SPECIFIC_NAME (processor_register_t) processor_register_t
 
typedef PROCESSOR_SPECIFIC_NAME (ssize_t) ssize_t
 
typedef PROCESSOR_SPECIFIC_NAME (size_t) size_t
 
typedef PROCESSOR_SPECIFIC_NAME (io_port_t) io_port_t
 
MUST_USE_RESULT bool TlbInvalidationGuard::closeAdmissionForTerminalFailure (TlbInvalidationResult result)
 
void TlbInvalidationGuard::retire ()
 

Detailed Description

processor-specific kernel interface

processor-specific kernel interface

Macro Definition Documentation

◆ _SIZE_T_DEFINED

#define _SIZE_T_DEFINED

Define size_t

Definition at line 85 of file system/include/pedigree/kernel/processor/types.h.

◆ _SSIZE_T_DEFINED

#define _SSIZE_T_DEFINED

Define ssize_t

Definition at line 80 of file system/include/pedigree/kernel/processor/types.h.

◆ DEBUG_BREAKPOINT_0

#define DEBUG_BREAKPOINT_0   0x01

Defines for debug status flags.

Definition at line 100 of file Processor.h.

◆ DEBUG_BREAKPOINT_1

#define DEBUG_BREAKPOINT_1   0x02

Definition at line 101 of file Processor.h.

◆ DEBUG_BREAKPOINT_2

#define DEBUG_BREAKPOINT_2   0x04

Definition at line 102 of file Processor.h.

◆ DEBUG_BREAKPOINT_3

#define DEBUG_BREAKPOINT_3   0x08

Definition at line 103 of file Processor.h.

◆ DEBUG_REG_ACCESS

#define DEBUG_REG_ACCESS    0x2000

Definition at line 104 of file Processor.h.

◆ DEBUG_SINGLE_STEP

#define DEBUG_SINGLE_STEP    0x4000

The next instruction in the stream accesses a debug register,/*#end#*‍/ and GD is turned on.

Definition at line 107 of file Processor.h.

◆ DEBUG_TASK_SWITCH

#define DEBUG_TASK_SWITCH   0x8000

The exception was caused by single-step execution mode (TF/*#end#*‍/ enabled in EFLAGS).

Definition at line 110 of file Processor.h.

Typedef Documentation

◆ ProcessorId

typedef size_t ProcessorId

Identifier of a processor

Definition at line 30 of file ProcessorInformation.h.

Enumeration Type Documentation

◆ DeviceHardIrqOperation

enum class DeviceHardIrqOperation
strong

Operations which are never valid inside a device hard-IRQ callback.

Definition at line 46 of file Processor.h.

◆ TlbInvalidationResult

enum class TlbInvalidationResult
strong

Completion status for a synchronous all-processor TLB invalidation.

Definition at line 56 of file Processor.h.

Function Documentation

◆ apMain()

void apMain ( )
extern

apMain is to be called as the main kernel entry point for a newly-started processor (once it has entered long mode and been initialised properly), and becomes the idle thread's code for the processor.

◆ closeAdmissionForTerminalFailure()

bool TlbInvalidationGuard::closeAdmissionForTerminalFailure ( TlbInvalidationResult  result)
inline

Permanently close mapping admission after a post-PTE invalidation failure. The first failing processor becomes the terminal coordinator.

Definition at line 551 of file Processor.h.

References ProcessorBase::closeTlbInvalidationAdmissionForTerminalFailure().

◆ PROCESSOR_SPECIFIC_NAME() [1/19]

typedef PROCESSOR_SPECIFIC_NAME ( int16_t  )

Define an 16bit signed integer type

◆ PROCESSOR_SPECIFIC_NAME() [2/19]

typedef PROCESSOR_SPECIFIC_NAME ( int32_t  )

Define a 32bit signed integer type

◆ PROCESSOR_SPECIFIC_NAME() [3/19]

typedef PROCESSOR_SPECIFIC_NAME ( int64_t  )

Define a 64bit signed integer type

◆ PROCESSOR_SPECIFIC_NAME() [4/19]

typedef PROCESSOR_SPECIFIC_NAME ( int8_t  )

Define an 8bit signed integer type

◆ PROCESSOR_SPECIFIC_NAME() [5/19]

typedef PROCESSOR_SPECIFIC_NAME ( InterruptState  )

Lift the processor-specifc InterruptState class into the global namespace

◆ PROCESSOR_SPECIFIC_NAME() [6/19]

typedef PROCESSOR_SPECIFIC_NAME ( intptr_t  )

Define a signed integer type for pointer arithmetic

◆ PROCESSOR_SPECIFIC_NAME() [7/19]

typedef PROCESSOR_SPECIFIC_NAME ( io_port_t  )

Define an I/O port type

◆ PROCESSOR_SPECIFIC_NAME() [8/19]

typedef PROCESSOR_SPECIFIC_NAME ( physical_uintptr_t  )

Define a unsigned integer type for physical pointer arithmetic

◆ PROCESSOR_SPECIFIC_NAME() [9/19]

typedef PROCESSOR_SPECIFIC_NAME ( processor_register_t  )

Define an unsigned integer type for processor registers

◆ PROCESSOR_SPECIFIC_NAME() [10/19]

typedef PROCESSOR_SPECIFIC_NAME ( ProcessorInformation  )

Define ProcessorInformation

◆ PROCESSOR_SPECIFIC_NAME() [11/19]

typedef PROCESSOR_SPECIFIC_NAME ( ProcessorState  )

Lift the processor-specific ProcessorState class into the global namespace

◆ PROCESSOR_SPECIFIC_NAME() [12/19]

typedef PROCESSOR_SPECIFIC_NAME ( SchedulerState  )

Lift the processor-specific SchedulerState class into the global namespace

◆ PROCESSOR_SPECIFIC_NAME() [13/19]

typedef PROCESSOR_SPECIFIC_NAME ( StackFrame  )

Lift the processor-specifc StackFrame class into the global namespace

◆ PROCESSOR_SPECIFIC_NAME() [14/19]

typedef PROCESSOR_SPECIFIC_NAME ( SyscallState  )

Lift the processor-specifc SyscallState class into the global namespace

◆ PROCESSOR_SPECIFIC_NAME() [15/19]

typedef PROCESSOR_SPECIFIC_NAME ( uint16_t  )

Define an 16bit unsigned integer type

◆ PROCESSOR_SPECIFIC_NAME() [16/19]

typedef PROCESSOR_SPECIFIC_NAME ( uint32_t  )

Define a 32bit unsigned integer type

◆ PROCESSOR_SPECIFIC_NAME() [17/19]

typedef PROCESSOR_SPECIFIC_NAME ( uint64_t  )

Define a 64bit unsigned integer type

◆ PROCESSOR_SPECIFIC_NAME() [18/19]

typedef PROCESSOR_SPECIFIC_NAME ( uint8_t  )

Define an 8bit unsigned integer type

◆ PROCESSOR_SPECIFIC_NAME() [19/19]

typedef PROCESSOR_SPECIFIC_NAME ( uintptr_t  )

Define an unsigned integer type for pointer arithmetic

◆ retire()

void TlbInvalidationGuard::retire ( )
inline

Retire this mutation lease before entering terminal processor control.

Definition at line 555 of file Processor.h.

References ProcessorBase::endTlbInvalidation().

◆ ~TlbInvalidationGuard()

TlbInvalidationGuard::~TlbInvalidationGuard ( )
inline

Definition at line 547 of file Processor.h.