|
The Pedigree Project 0.1
|
#include <ProcessorInformation.h>
Collaboration diagram for X86CommonProcessorInformation:Classes | |
| struct | KernelGsAnchor |
Public Types | |
| typedef struct X64TaskStateSegment | TaskStateSegment |
Public Member Functions | |
| KernelGsAnchor * | kernelGsAnchor () |
| void | activateKernelGsAnchor (size_t processorIndex) |
| VirtualAddressSpace & | getVirtualAddressSpace () const |
| void | setVirtualAddressSpace (VirtualAddressSpace &virtualAddressSpace) |
| void | setTssSelector (uint16_t TssSelector) |
| void | setTss (void *Tss) |
| uint16_t | getTssSelector () const |
| void * | getTss () const |
| uint16_t | getTlsSelector () |
| void | setTlsSelector (uint16_t tls) |
| uintptr_t | getKernelStack () const |
| void | setKernelStack (uintptr_t stack) |
| Thread * | getCurrentThread () const |
| void | setCurrentThread (Thread *pThread) |
| PerProcessorScheduler & | getScheduler () |
| RcuReadState & | rcuState () |
| ProcessorId | processorId () const |
| uint8_t | localApicId () const |
| void | initialiseTscClockAnchor (uint64_t tsc, uint64_t nanoseconds) |
| ALWAYS_INLINE bool | getTscClockAnchor (uint64_t &tsc, uint64_t &nanoseconds) const |
Protected Member Functions | |
| X86CommonProcessorInformation (ProcessorId processorId, uint8_t apicId=0) | |
| virtual | ~X86CommonProcessorInformation () |
| void | setIds (ProcessorId processorId, uint8_t apicId=0) |
Private Member Functions | |
| X86CommonProcessorInformation () | |
| X86CommonProcessorInformation (const X86CommonProcessorInformation &) | |
| X86CommonProcessorInformation & | operator= (const X86CommonProcessorInformation &) |
Private Attributes | |
| ProcessorId | m_ProcessorId |
| uint16_t | m_TssSelector |
| TaskStateSegment * | m_Tss |
| VirtualAddressSpace * | m_VirtualAddressSpace |
| uint8_t | m_LocalApicId |
| Thread * | m_pCurrentThread |
| PerProcessorScheduler * | m_Scheduler |
| uint16_t | m_TlsSelector |
| size_t | m_DeviceHardIrqDepth |
| uint64_t | m_TscClockAnchor |
| uint64_t | m_TscClockAnchorNanoseconds |
| bool | m_TscClockAnchorInitialised |
| RcuReadState | m_RcuState |
| KernelGsAnchor | m_KernelGsAnchor {0, 0, this, 0, nullptr} |
Friends | |
| class | ProcessorBase |
| class | Multiprocessor |
| class | DeviceHardIrqContext |
| class | SuspendDeviceHardIrqContext |
Common x86 processor information structure
Definition at line 41 of file x86_common/ProcessorInformation.h.
Definition at line 46 of file x86_common/ProcessorInformation.h.
|
protected |
Construct a X86CommonProcessor object
| [in] | processorId | Identifier of the processor |
Definition at line 129 of file x86_common/ProcessorInformation.cc.
|
protectedvirtual |
The destructor does nothing
Definition at line 144 of file x86_common/ProcessorInformation.cc.
References m_Scheduler.
|
private |
Default constructor
|
private |
Copy-constructor
| void X86CommonProcessorInformation::activateKernelGsAnchor | ( | size_t | processorIndex | ) |
Definition at line 91 of file x86_common/ProcessorInformation.cc.
|
inline |
Definition at line 103 of file x86_common/ProcessorInformation.h.
| uintptr_t X86CommonProcessorInformation::getKernelStack | ( | ) | const |
Definition at line 76 of file x86_common/ProcessorInformation.cc.
| PerProcessorScheduler & X86CommonProcessorInformation::getScheduler | ( | ) |
Definition at line 115 of file x86_common/ProcessorInformation.cc.
| uint16_t X86CommonProcessorInformation::getTlsSelector | ( | ) |
Gets the processor's TLS base segment
Definition at line 68 of file x86_common/ProcessorInformation.cc.
References m_TlsSelector.
|
inline |
Reads this processor's clock anchor after its release publication.
Definition at line 125 of file x86_common/ProcessorInformation.h.
| void * X86CommonProcessorInformation::getTss | ( | ) | const |
Get the processor's TSS
Definition at line 64 of file x86_common/ProcessorInformation.cc.
References m_Tss.
| uint16_t X86CommonProcessorInformation::getTssSelector | ( | ) | const |
Get the processor's TSS selector
Definition at line 59 of file x86_common/ProcessorInformation.cc.
References m_TssSelector.
| VirtualAddressSpace & X86CommonProcessorInformation::getVirtualAddressSpace | ( | ) | const |
Get the current processor's VirtualAddressSpace
Definition at line 34 of file x86_common/ProcessorInformation.cc.
References VirtualAddressSpace::getKernelAddressSpace(), and m_VirtualAddressSpace.
| void X86CommonProcessorInformation::initialiseTscClockAnchor | ( | uint64_t | tsc, |
| uint64_t | nanoseconds | ||
| ) |
Installs this processor's immutable high-resolution clock anchor.
Definition at line 123 of file x86_common/ProcessorInformation.cc.
References m_TscClockAnchor, m_TscClockAnchorInitialised, and m_TscClockAnchorNanoseconds.
|
inline |
Definition at line 71 of file x86_common/ProcessorInformation.h.
|
inline |
Definition at line 117 of file x86_common/ProcessorInformation.h.
|
private |
Assignment operator
|
inline |
Definition at line 114 of file x86_common/ProcessorInformation.h.
|
inline |
Definition at line 110 of file x86_common/ProcessorInformation.h.
| void X86CommonProcessorInformation::setCurrentThread | ( | Thread * | pThread | ) |
Definition at line 100 of file x86_common/ProcessorInformation.cc.
|
protected |
Definition at line 148 of file x86_common/ProcessorInformation.cc.
| void X86CommonProcessorInformation::setKernelStack | ( | uintptr_t | stack | ) |
Definition at line 79 of file x86_common/ProcessorInformation.cc.
| void X86CommonProcessorInformation::setTlsSelector | ( | uint16_t | tls | ) |
Sets the processor's TLS base segment
Definition at line 72 of file x86_common/ProcessorInformation.cc.
References m_TlsSelector.
| void X86CommonProcessorInformation::setTss | ( | void * | Tss | ) |
Set the processor's TSS
| [in] | Tss | pointer to the new TSS |
Definition at line 54 of file x86_common/ProcessorInformation.cc.
References m_Tss.
| void X86CommonProcessorInformation::setTssSelector | ( | uint16_t | TssSelector | ) |
Set the processor's TSS selector
| [in] | TssSelector | the new TSS selector |
Definition at line 49 of file x86_common/ProcessorInformation.cc.
References m_TssSelector.
| void X86CommonProcessorInformation::setVirtualAddressSpace | ( | VirtualAddressSpace & | virtualAddressSpace | ) |
Set the current processor's VirtualAddressSpace
| [in] | virtualAddressSpace | reference to the new VirtualAddressSpace |
Definition at line 42 of file x86_common/ProcessorInformation.cc.
References m_VirtualAddressSpace.
|
friend |
Definition at line 145 of file x86_common/ProcessorInformation.h.
|
friend |
Definition at line 43 of file x86_common/ProcessorInformation.h.
|
friend |
Definition at line 42 of file x86_common/ProcessorInformation.h.
|
friend |
Definition at line 146 of file x86_common/ProcessorInformation.h.
|
private |
Device hard-IRQ callbacks currently active on this processor.
Definition at line 175 of file x86_common/ProcessorInformation.h.
|
private |
Definition at line 185 of file x86_common/ProcessorInformation.h.
|
private |
Local APIC Id
Definition at line 167 of file x86_common/ProcessorInformation.h.
|
private |
The current thread
Definition at line 169 of file x86_common/ProcessorInformation.h.
|
private |
Identifier of that processor
Definition at line 159 of file x86_common/ProcessorInformation.h.
|
private |
Definition at line 182 of file x86_common/ProcessorInformation.h.
|
private |
The processor's scheduler.
Definition at line 171 of file x86_common/ProcessorInformation.h.
Referenced by ~X86CommonProcessorInformation().
|
private |
The processor's TLS segment
Definition at line 173 of file x86_common/ProcessorInformation.h.
Referenced by getTlsSelector(), and setTlsSelector().
|
private |
This processor's local TSC at its monotonic-clock anchor.
Definition at line 177 of file x86_common/ProcessorInformation.h.
Referenced by initialiseTscClockAnchor().
|
private |
Release-published after both anchor values have been installed.
Definition at line 181 of file x86_common/ProcessorInformation.h.
Referenced by initialiseTscClockAnchor().
|
private |
Global monotonic time represented by m_TscClockAnchor.
Definition at line 179 of file x86_common/ProcessorInformation.h.
Referenced by initialiseTscClockAnchor().
|
private |
Pointer to this processor's Task-State-Segment
Definition at line 163 of file x86_common/ProcessorInformation.h.
|
private |
The Task-State-Segment selector of that Processor
Definition at line 161 of file x86_common/ProcessorInformation.h.
Referenced by getTssSelector(), and setTssSelector().
|
private |
The current VirtualAddressSpace
Definition at line 165 of file x86_common/ProcessorInformation.h.
Referenced by getVirtualAddressSpace(), and setVirtualAddressSpace().