ThreadData
Scheduler::ThreadData* scheduler_data; // protected by scheduler lock
struct ThreadData;
has_cache_expired(const ThreadData* threadData)
choose_core(const ThreadData* threadData)
rebalance(const ThreadData* threadData)
rebalance(const ThreadData* threadData)
has_cache_expired(const ThreadData* threadData)
choose_core(const ThreadData* threadData)
ThreadData* threadData = thread->scheduler_data;
ThreadData* threadData = thread->scheduler_data;
ThreadData* threadData = thread->scheduler_data;
ThreadData* oldThreadData = oldThread->scheduler_data;
ThreadData* nextThreadData;
void operator()(ThreadData* thread);
thread->scheduler_data = new(std::nothrow) ThreadData(thread);
ThreadData::ComputeQuantumLengths();
ThreadEnqueuer::operator()(ThreadData* thread)
ThreadData* threadData = thread->scheduler_data;
CPUEntry::PushFront(ThreadData* thread, int32 priority)
CPUEntry::PushBack(ThreadData* thread, int32 priority)
CPUEntry::Remove(ThreadData* thread)
ThreadData*
ThreadData*
ThreadData*
ThreadData*
CPUEntry::ChooseNextThread(ThreadData* oldThread, bool putAtBack)
ThreadData* pinnedThread = fRunQueue.PeekMaximum();
ThreadData* sharedThread = fCore->PeekThread();
CPUEntry::TrackActivity(ThreadData* oldThreadData, ThreadData* nextThreadData)
CPUEntry::StartQuantumTimer(ThreadData* thread, bool wasPreempted)
CPUEntry::_RequestPerformanceLevel(ThreadData* threadData)
CoreEntry::PushFront(ThreadData* thread, int32 priority)
CoreEntry::PushBack(ThreadData* thread, int32 priority)
CoreEntry::Remove(ThreadData* thread)
ThreadData* threadData = fRunQueue.PeekMaximum();
ThreadData* threadData = thread->scheduler_data;
ThreadData* threadData = iterator.Next();
void PushFront(ThreadData* thread,
void PushBack(ThreadData* thread,
void Remove(ThreadData* thread);
ThreadData* PeekThread() const;
struct ThreadData;
class ThreadRunQueue : public RunQueue<ThreadData, THREAD_MAX_SET_PRIORITY> {
void PushFront(ThreadData* thread,
void PushBack(ThreadData* thread,
void Remove(ThreadData* thread);
ThreadData* PeekThread() const;
ThreadData* PeekIdleThread() const;
ThreadData* ChooseNextThread(ThreadData* oldThread,
void TrackActivity(ThreadData* oldThreadData,
ThreadData* nextThreadData);
void StartQuantumTimer(ThreadData* thread,
ThreadData* threadData);
const Scheduler::ThreadData* threadData);
const Scheduler::ThreadData* threadData);
const Scheduler::ThreadData* threadData);
ThreadData::Init()
ThreadData* currentThreadData = currentThread->scheduler_data;
ThreadData::Init(CoreEntry* core)
ThreadData::Dump() const
ThreadData::ChooseCoreAndCPU(CoreEntry*& targetCore, CPUEntry*& targetCPU)
ThreadData::_InitBase()
ThreadData::ComputeQuantum() const
ThreadData::UnassignCore(bool running)
ThreadData::ComputeQuantumLengths()
ThreadData::_GetPenalty() const
ThreadData::_ComputeNeededLoad()
ThreadData::_ComputeEffectivePriority() const
ThreadData::_ScaleQuantum(bigtime_t maxQuantum, bigtime_t minQuantum,
ThreadData::_ChooseCore() const
ThreadData::_ChooseCPU(CoreEntry* core, bool& rescheduleNeeded) const
ThreadData::ThreadData(Thread* thread)
virtual void operator()(ThreadData* thread) = 0;
ThreadData::_GetMinimalPriority() const
ThreadData::IsRealTime() const
ThreadData::IsIdle() const
ThreadData::HasCacheExpired() const
ThreadData::Rebalance() const
ThreadData::GetEffectivePriority() const
ThreadData::_IncreasePenalty()
struct ThreadData : public DoublyLinkedListLinkImpl<ThreadData>,
ThreadData::StartCPUTime()
RunQueueLinkImpl<ThreadData> {
ThreadData::StopCPUTime()
ThreadData::CancelPenalty()
ThreadData::ShouldCancelPenalty() const
ThreadData::SetStolenInterruptTime(bigtime_t interruptTime)
ThreadData::GetQuantumLeft()
ThreadData::StartQuantum()
ThreadData::HasQuantumEnded(bool wasPreempted, bool hasYielded)
ThreadData(Thread* thread);
ThreadData::Continues()
ThreadData::GoesAway()
ThreadData::Dies()
ThreadData::PutBack()
ThreadData::Enqueue(bool& wasRunQueueEmpty)
ThreadData* top = cpu->PeekThread();
ThreadData* top = fCore->PeekThread();
ThreadData::Dequeue()
ThreadData::UpdateActivity(bigtime_t active)