sead::Thread class

Base classes

class IDisposer
class INamable
class Reflexible

Derived classes

class DelegateThread
class MainThread
class sead::NinJoyNpadDevice::VibrationThread
class Worker

Public types

enum class HeapNullOption { AlwaysUseSpecifiedHeap = 0, UseSpecifiedOrContainHeap = 1, DoNotAppendDisposerIfNoHeapSpecified = 2, UseSpecifiedOrCurrentHeap = 3 }
enum class NodeClassType { Reflexible = 0, Node = 1, Other = 2 }
enum class AllocFlg { Name = 1u << 0u, Meta = 1u << 1u }

Public static variables

static const s32 cDefaultPriority

Public static functions

static void yield()
static void sleep(TickSpan howLong)
static auto getListNodeOffset() -> u32

Constructors, destructors, conversion operators

Thread(const SafeString& name, Heap* heap, s32 priority, MessageQueue::BlockType block_type, MessageQueue::Element quit_msg, s32 stack_size, s32 message_queue_size)
~Thread() override
Thread(const Thread&) deleted

Public functions

auto operator=(const Thread&) -> Thread& deleted
void destroy() virtual
auto sendMessage(MessageQueue::Element msg, MessageQueue::BlockType block_type) -> bool virtual
auto recvMessage(MessageQueue::BlockType block_type) -> MessageQueue::Element virtual
auto getMessageQueue() const -> const MessageQueue& virtual
auto start() -> bool virtual
void quit(bool is_jam) virtual
void waitDone() virtual
void quitAndDestroySingleThread(bool is_jam) virtual
void quitAndWaitDoneSingleThread(bool is_jam) virtual
void setPriority(s32 prio) virtual
auto getPriority() const -> s32 virtual
auto getBlockType() const -> MessageQueue::BlockType virtual
auto getStackSize() const -> s32 virtual
auto calcStackUsedSizePeak() const -> s32 virtual
auto getId() const -> u32
auto getState() const -> State
auto isDone() const -> bool
auto isActive() const -> bool
auto getAffinity() const -> const CoreIdMask&
void setAffinity(const CoreIdMask& affinity)
void checkStackOverFlow(const char* source_file, s32 source_line) const
void checkStackEndCorruption(const char* source_file, s32 source_line) const
void checkStackPointerOverFlow(const char* source_file, s32 source_line) const
void setStackOverflowExceptionEnable(bool)
auto getThreadListNode() -> ThreadListNode*
auto isDefaultPriority() const -> bool
auto getCurrentHeap() const -> Heap*
auto setCurrentHeap(Heap* heap) -> Heap*
auto getFindContainHeapCache() -> FindContainHeapCache*
auto getName() const -> const SafeString&
void setName(const SafeString& name)
auto getNodeClassType() const -> NodeClassType virtual

Protected functions

void run_() virtual
void calc_(MessageQueue::Element msg) pure virtual
auto getStackCheckStartAddress_() const -> uintptr_t virtual
void initStackCheck_()
void initStackCheckWithCurrentStackPointer_()
auto getDisposerHeap_() const -> Heap*

Protected variables

MessageQueue mMessageQueue
s32 mStackSize
ThreadListNode mListNode
Heap* mCurrentHeap
FindContainHeapCache mFindContainHeapCache
MessageQueue::BlockType mBlockType
MessageQueue::Element mQuitMsg
u32 mId
State mState
CoreIdMask mAffinity
void* mStackTop
void* mStackTopForCheck
s32 mPriority

Enum documentation

enum class sead::Thread::HeapNullOption

enum class sead::Thread::AllocFlg

Function documentation

static u32 sead::Thread::getListNodeOffset()

const SafeString& sead::Thread::getName() const

void sead::Thread::setName(const SafeString& name)

NodeClassType sead::Thread::getNodeClassType() const virtual

Heap* sead::Thread::getDisposerHeap_() const protected