NeKernel dev
Loading...
Searching...
No Matches
Kernel::HardwareThreadScheduler Class Referencefinal

#include <HardwareThreadScheduler.h>

Inheritance diagram for Kernel::HardwareThreadScheduler:
Kernel::ISchedulable

Public Member Functions

 HardwareThreadScheduler ()
 Constructor and destructors.
 ~HardwareThreadScheduler ()
 !
HAL::StackFramePtr Leak () noexcept
 Get Stack Frame of AP.
Ref< HardwareThread * > operator[] (SizeT idx)
bool operator! () noexcept
 operator bool () noexcept
Bool IsUser () override
 Is this object only accepting user tasks?
Bool IsKernel () override
 Is this object only accepting kernel tasks?
Bool HasMP () override
 Is this object offloading to another CPU?
STATIC HardwareThreadSchedulerThe ()
 Shared instance of the MP Mgr.
SizeT Capacity () noexcept
 Returns the amount of threads present in the system.
Public Member Functions inherited from Kernel::ISchedulable
 ISchedulable ()=default
virtual ~ISchedulable ()=default
ISchedulableoperator= (const ISchedulable &)=default
 ISchedulable (const ISchedulable &)=default

Private Attributes

Array< HardwareThread, kMaxAPInsideSchedfThreadList
ThreadID fCurrentThread {0}

Friends

class UserProcessHelper

Constructor & Destructor Documentation

◆ HardwareThreadScheduler()

Kernel::HardwareThreadScheduler::HardwareThreadScheduler ( )
explicitdefault

Constructor and destructors.

! Default constructor.

◆ ~HardwareThreadScheduler()

Kernel::HardwareThreadScheduler::~HardwareThreadScheduler ( )
default

!

Default destructor.

Member Function Documentation

◆ Capacity()

SizeT Kernel::HardwareThreadScheduler::Capacity ( )
noexcept

Returns the amount of threads present in the system.

Returns the amount of core present.

Returns
SizeT the amount of cores present.
the number of APs.

◆ HasMP()

Bool Kernel::HardwareThreadScheduler::HasMP ( )
inlineoverridevirtual

Is this object offloading to another CPU?

Reimplemented from Kernel::ISchedulable.

◆ IsKernel()

Bool Kernel::HardwareThreadScheduler::IsKernel ( )
inlineoverridevirtual

Is this object only accepting kernel tasks?

Reimplemented from Kernel::ISchedulable.

◆ IsUser()

Bool Kernel::HardwareThreadScheduler::IsUser ( )
inlineoverridevirtual

Is this object only accepting user tasks?

Reimplemented from Kernel::ISchedulable.

◆ Leak()

HAL::StackFramePtr Kernel::HardwareThreadScheduler::Leak ( )
noexcept

Get Stack Frame of AP.

◆ operator bool()

Kernel::HardwareThreadScheduler::operator bool ( )
noexcept

Check if thread pool isn't empty.

Returns

◆ operator!()

bool Kernel::HardwareThreadScheduler::operator! ( )
noexcept

Reverse operator bool

Returns

◆ operator[]()

Ref< HardwareThread * > Kernel::HardwareThreadScheduler::operator[] ( SizeT idx)

Get Hardware thread at index.

Parameters
idxthe index
Returns
the reference to the hardware thread.

◆ The()

HardwareThreadScheduler & Kernel::HardwareThreadScheduler::The ( )

Shared instance of the MP Mgr.

Shared singleton function.

Returns
the reference to the mp manager class.

◆ UserProcessHelper

friend class UserProcessHelper
friend

Member Data Documentation

◆ fCurrentThread

ThreadID Kernel::HardwareThreadScheduler::fCurrentThread {0}
private

◆ fThreadList

Array<HardwareThread, kMaxAPInsideSched> Kernel::HardwareThreadScheduler::fThreadList
private

The documentation for this class was generated from the following files: