|
The Pedigree Project 0.1
|
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 () |
processor-specific kernel interface
processor-specific kernel interface
| #define _SIZE_T_DEFINED |
Define size_t
Definition at line 85 of file system/include/pedigree/kernel/processor/types.h.
| #define _SSIZE_T_DEFINED |
Define ssize_t
Definition at line 80 of file system/include/pedigree/kernel/processor/types.h.
| #define DEBUG_BREAKPOINT_0 0x01 |
Defines for debug status flags.
Definition at line 100 of file Processor.h.
| #define DEBUG_BREAKPOINT_1 0x02 |
Definition at line 101 of file Processor.h.
| #define DEBUG_BREAKPOINT_2 0x04 |
Definition at line 102 of file Processor.h.
| #define DEBUG_BREAKPOINT_3 0x08 |
Definition at line 103 of file Processor.h.
| #define DEBUG_REG_ACCESS 0x2000 |
Definition at line 104 of file Processor.h.
| #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.
| #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 size_t ProcessorId |
Identifier of a processor
Definition at line 30 of file ProcessorInformation.h.
|
strong |
Operations which are never valid inside a device hard-IRQ callback.
Definition at line 46 of file Processor.h.
|
strong |
Completion status for a synchronous all-processor TLB invalidation.
Definition at line 56 of file Processor.h.
|
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.
|
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().
| typedef PROCESSOR_SPECIFIC_NAME | ( | int16_t | ) |
Define an 16bit signed integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | int32_t | ) |
Define a 32bit signed integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | int64_t | ) |
Define a 64bit signed integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | int8_t | ) |
Define an 8bit signed integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | InterruptState | ) |
Lift the processor-specifc InterruptState class into the global namespace
| typedef PROCESSOR_SPECIFIC_NAME | ( | intptr_t | ) |
Define a signed integer type for pointer arithmetic
| typedef PROCESSOR_SPECIFIC_NAME | ( | io_port_t | ) |
Define an I/O port type
| typedef PROCESSOR_SPECIFIC_NAME | ( | physical_uintptr_t | ) |
Define a unsigned integer type for physical pointer arithmetic
| typedef PROCESSOR_SPECIFIC_NAME | ( | processor_register_t | ) |
Define an unsigned integer type for processor registers
| typedef PROCESSOR_SPECIFIC_NAME | ( | ProcessorInformation | ) |
Define ProcessorInformation
| typedef PROCESSOR_SPECIFIC_NAME | ( | ProcessorState | ) |
Lift the processor-specific ProcessorState class into the global namespace
| typedef PROCESSOR_SPECIFIC_NAME | ( | SchedulerState | ) |
Lift the processor-specific SchedulerState class into the global namespace
| typedef PROCESSOR_SPECIFIC_NAME | ( | StackFrame | ) |
Lift the processor-specifc StackFrame class into the global namespace
| typedef PROCESSOR_SPECIFIC_NAME | ( | SyscallState | ) |
Lift the processor-specifc SyscallState class into the global namespace
| typedef PROCESSOR_SPECIFIC_NAME | ( | uint16_t | ) |
Define an 16bit unsigned integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | uint32_t | ) |
Define a 32bit unsigned integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | uint64_t | ) |
Define a 64bit unsigned integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | uint8_t | ) |
Define an 8bit unsigned integer type
| typedef PROCESSOR_SPECIFIC_NAME | ( | uintptr_t | ) |
Define an unsigned integer type for pointer arithmetic
|
inline |
Retire this mutation lease before entering terminal processor control.
Definition at line 555 of file Processor.h.
References ProcessorBase::endTlbInvalidation().
|
inline |
Definition at line 547 of file Processor.h.