7#ifndef __INC_MP_MANAGER_H__
8#define __INC_MP_MANAGER_H__
17#define kMaxAPInsideSched (4U)
57 void Wake(
const BOOL wakeup =
false);
#define NE_COPY_DEFAULT(KLASS)
Definition Detail.h:17
Kernel::HEL::BootInfoHeader * kHandoverHeader
Bootloader information header global variable.
Definition Handover.h:108
Definition HardwareThreadScheduler.h:45
void Wake(const BOOL wakeup=false)
Wakeup the processor.
Definition HardwareThreadScheduler.cc:84
HAL::StackFramePtr fStack
Definition HardwareThreadScheduler.h:71
Bool fWakeup
Definition HardwareThreadScheduler.h:74
ThreadKind fKind
Definition HardwareThreadScheduler.h:72
void Busy(const BOOL busy=false)
Definition HardwareThreadScheduler.cc:72
friend class HardwareThreadScheduler
Definition HardwareThreadScheduler.h:79
BOOL IsBusy()
is the thread busy?
Definition HardwareThreadScheduler.cc:59
BOOL Switch(HAL::StackFramePtr frame)
Switch to hardware thread.
Definition HardwareThreadScheduler.cc:94
UInt64 fPTime
Definition HardwareThreadScheduler.h:76
BOOL IsWakeup()
!
Definition HardwareThreadScheduler.cc:110
ThreadID & ID()
returns the id of the thread.
Definition HardwareThreadScheduler.cc:44
ThreadKind & Kind()
returns the kind of thread we have.
Definition HardwareThreadScheduler.cc:51
Bool fBusy
Definition HardwareThreadScheduler.h:75
ThreadID fID
Definition HardwareThreadScheduler.h:73
HAL::StackFramePtr StackFrame()
Get processor stack frame.
Definition HardwareThreadScheduler.cc:67
friend class UserProcessHelper
Definition HardwareThreadScheduler.h:80
Definition HardwareThreadScheduler.h:88
SizeT Capacity()
Returns the amount of threads present in the system.
Definition HardwareThreadScheduler.cc:181
~HardwareThreadScheduler()
!
HAL::StackFramePtr Leak()
Get Stack Frame of AP.
Definition HardwareThreadScheduler.cc:136
STATIC HardwareThreadScheduler & The()
Shared instance of the MP Mgr.
Definition HardwareThreadScheduler.cc:129
HardwareThreadScheduler()
Constructor and destructors.
ThreadID fCurrentThreadIdx
Definition HardwareThreadScheduler.h:123
Bool HasMP() override
Is this object offloading to another CPU?
Definition HardwareThreadScheduler.h:109
Bool IsUser() override
Is this object only accepting user tasks?
Definition HardwareThreadScheduler.h:105
friend class UserProcessHelper
Definition HardwareThreadScheduler.h:90
Bool IsKernel() override
Is this object only accepting kernel tasks?
Definition HardwareThreadScheduler.h:107
Ref< HardwareThread * > operator[](SizeT idx)
Definition HardwareThreadScheduler.cc:147
Array< HardwareThread, kMaxAPInsideSched > fThreadList
Definition HardwareThreadScheduler.h:122
bool operator!()
Definition HardwareThreadScheduler.cc:173
Reference wrapper class. /// =========================================================== ///.
Definition Ref.h:22
StackFrame * StackFramePtr
Definition Processor.h:34
UPS inline definitions.
Definition Device.h:12
void Void
Definition Config.h:87
Void mp_wakeup_thread(HAL::StackFrame *stack)
Wakes up thread. Wakes up thread from the hang state.
Definition HalSchedulerCorePrimitives.cc:33
__SIZE_TYPE__ SizeT
Definition Config.h:60
Void mp_hang_thread(HAL::StackFrame *stack)
makes the thread sleep on a loop. hooks and hangs thread to prevent code from executing.
Definition HalSchedulerCorePrimitives.cc:44
__UINT32_TYPE__ UInt32
Definition Config.h:44
ThreadKind
Definition HardwareThreadScheduler.h:25
@ kAPRealTime
Definition HardwareThreadScheduler.h:29
@ kAPCount
Definition HardwareThreadScheduler.h:32
@ kAPBoot
Definition HardwareThreadScheduler.h:31
@ kAPInvalid
Definition HardwareThreadScheduler.h:26
@ kAPStandard
Definition HardwareThreadScheduler.h:28
@ kAPSystemReserved
Definition HardwareThreadScheduler.h:27
__UINT64_TYPE__ UInt64
Definition Config.h:48
UInt32 ThreadID
Definition HardwareThreadScheduler.h:23
bool Bool
Definition Config.h:50