sead
Loading...
Searching...
No Matches
sead::Thread Class Referenceabstract

#include <seadThread.h>

Inherits sead::IDisposer, and sead::INamable.

Inherited by sead::DelegateThread.

Public Member Functions

 Thread (const SafeString &name, Heap *heap, s32 priority=cDefaultPriority, MessageQueue::BlockType block_type=cDefaultBlockType, MessageQueue::Element quit_msg=cDefaultQuitMsg, s32 stack_size=cDefaultStackSize, s32 msg_queue_size=cDefaultMsgQueueSize)
virtual ~Thread ()
virtual void destroy ()
virtual bool sendMessage (MessageQueue::Element, MessageQueue::BlockType)
virtual MessageQueue::Element recvMessage (MessageQueue::BlockType)
virtual bool start ()
virtual void quit (bool)
bool isDone () const
virtual void waitDone ()
virtual void quitAndDestroySingleThread (bool is_jam)
virtual void quitAndWaitDoneSingleThread (bool is_jam)
u32 getID () const
HeapgetCurrentHeap () const
virtual void setPriority (s32)
virtual s32 getPriority () const
virtual MessageQueue::BlockType getBlockType () const
virtual s32 getStackSize () const
virtual s32 calcStackUsedSizePeak () const
void checkStackOverFlow ()
const CoreIdMaskgetAffinity () const
void setAffinity (const CoreIdMask &)
void * getStackTop () const
void * getStackBottom () const
s32 getState () const
MessageQueue::Element getQuitMsg () const
Public Member Functions inherited from sead::IDisposer
 IDisposer ()
virtual ~IDisposer ()
Public Member Functions inherited from sead::INamable
 INamable ()
 INamable (const SafeString &name)
void setName (const SafeString &name)
const SafeStringgetName () const

Static Public Member Functions

static void sleep (TickSpan span)
static void yield ()

Static Public Attributes

static const s32 cDefaultSeadPriority = 16
static const s32 cDefaultPriority
static const MessageQueue::BlockType cDefaultBlockType = MessageQueue::cNoBlock
static const MessageQueue::Element cDefaultQuitMsg = 0x7fffffff
static const s32 cDefaultStackSize = 4 * 1024
static const s32 cDefaultMsgQueueSize = 32

Protected Member Functions

 Thread (Heap *, OSThread *)
ThreadListNodegetListNode ()
void setCurrentHeap_ (Heap *)
void run_ ()
virtual void calc_ (MessageQueue::Element)=0
void initStackCheck_ ()
virtual u32 * getStackCheckStartAddress_ () const

Static Protected Member Functions

static void cafeThreadFunc_ (void *)

Protected Attributes

MessageQueue mMessageQueue
s32 mStackSize
ThreadListNode mListNode
HeapmCurrentHeap
MessageQueue::BlockType mBlockType
MessageQueue::Element mQuitMsg
u32 mID
s32 mState [1]
u32 mCoreIdMask
OSThread * mThreadInner
u8 * mStackTop
s32 mPriority

Private Member Functions

 Thread (const Thread &)
const Threadoperator= (const Thread &)

Friends

class ThreadMgr

Constructor & Destructor Documentation

◆ Thread() [1/3]

sead::Thread::Thread ( const Thread & )
private

◆ Thread() [2/3]

sead::Thread::Thread ( Heap * ,
OSThread *  )
protected

◆ Thread() [3/3]

sead::Thread::Thread ( const SafeString & name,
Heap * heap,
s32 priority = cDefaultPriority,
MessageQueue::BlockType block_type = cDefaultBlockType,
MessageQueue::Element quit_msg = cDefaultQuitMsg,
s32 stack_size = cDefaultStackSize,
s32 msg_queue_size = cDefaultMsgQueueSize )

◆ ~Thread()

virtual sead::Thread::~Thread ( )
virtual

Member Function Documentation

◆ operator=()

const Thread & sead::Thread::operator= ( const Thread & )
private

◆ destroy()

virtual void sead::Thread::destroy ( )
inlinevirtual

◆ sendMessage()

virtual bool sead::Thread::sendMessage ( MessageQueue::Element ,
MessageQueue::BlockType  )
virtual

◆ recvMessage()

virtual MessageQueue::Element sead::Thread::recvMessage ( MessageQueue::BlockType )
virtual

◆ start()

virtual bool sead::Thread::start ( )
virtual

◆ quit()

virtual void sead::Thread::quit ( bool )
virtual

◆ isDone()

bool sead::Thread::isDone ( ) const

◆ waitDone()

virtual void sead::Thread::waitDone ( )
virtual

◆ quitAndDestroySingleThread()

virtual void sead::Thread::quitAndDestroySingleThread ( bool is_jam)
inlinevirtual

◆ quitAndWaitDoneSingleThread()

virtual void sead::Thread::quitAndWaitDoneSingleThread ( bool is_jam)
virtual

◆ sleep()

void sead::Thread::sleep ( TickSpan span)
static

◆ yield()

void sead::Thread::yield ( )
static

◆ getID()

u32 sead::Thread::getID ( ) const
inline

◆ getCurrentHeap()

Heap * sead::Thread::getCurrentHeap ( ) const
inline

◆ setPriority()

virtual void sead::Thread::setPriority ( s32 )
virtual

◆ getPriority()

virtual s32 sead::Thread::getPriority ( ) const
virtual

◆ getBlockType()

virtual MessageQueue::BlockType sead::Thread::getBlockType ( ) const
inlinevirtual

◆ getStackSize()

virtual s32 sead::Thread::getStackSize ( ) const
inlinevirtual

◆ calcStackUsedSizePeak()

virtual s32 sead::Thread::calcStackUsedSizePeak ( ) const
virtual

◆ checkStackOverFlow()

void sead::Thread::checkStackOverFlow ( )

◆ getAffinity()

const CoreIdMask & sead::Thread::getAffinity ( ) const

◆ setAffinity()

void sead::Thread::setAffinity ( const CoreIdMask & )

◆ getListNode()

ThreadListNode * sead::Thread::getListNode ( )
protected

◆ setCurrentHeap_()

void sead::Thread::setCurrentHeap_ ( Heap * )
protected

◆ run_()

void sead::Thread::run_ ( )
protected

◆ calc_()

virtual void sead::Thread::calc_ ( MessageQueue::Element )
protectedpure virtual

Implemented in sead::DelegateThread.

◆ initStackCheck_()

void sead::Thread::initStackCheck_ ( )
protected

◆ getStackCheckStartAddress_()

virtual u32 * sead::Thread::getStackCheckStartAddress_ ( ) const
protectedvirtual

◆ cafeThreadFunc_()

void sead::Thread::cafeThreadFunc_ ( void * )
staticprotected

◆ getStackTop()

void * sead::Thread::getStackTop ( ) const
inline

◆ getStackBottom()

void * sead::Thread::getStackBottom ( ) const
inline

◆ getState()

s32 sead::Thread::getState ( ) const
inline

◆ getQuitMsg()

MessageQueue::Element sead::Thread::getQuitMsg ( ) const
inline

◆ ThreadMgr

friend class ThreadMgr
friend

Member Data Documentation

◆ cDefaultSeadPriority

const s32 sead::Thread::cDefaultSeadPriority = 16
static

◆ cDefaultPriority

const s32 sead::Thread::cDefaultPriority
static

◆ cDefaultBlockType

const MessageQueue::BlockType sead::Thread::cDefaultBlockType = MessageQueue::cNoBlock
static

◆ cDefaultQuitMsg

const MessageQueue::Element sead::Thread::cDefaultQuitMsg = 0x7fffffff
static

◆ cDefaultStackSize

const s32 sead::Thread::cDefaultStackSize = 4 * 1024
static

◆ cDefaultMsgQueueSize

const s32 sead::Thread::cDefaultMsgQueueSize = 32
static

◆ mMessageQueue

MessageQueue sead::Thread::mMessageQueue
protected

◆ mStackSize

s32 sead::Thread::mStackSize
protected

◆ mListNode

ThreadListNode sead::Thread::mListNode
protected

◆ mCurrentHeap

Heap* sead::Thread::mCurrentHeap
protected

◆ mBlockType

MessageQueue::BlockType sead::Thread::mBlockType
protected

◆ mQuitMsg

MessageQueue::Element sead::Thread::mQuitMsg
protected

◆ mID

u32 sead::Thread::mID
protected

◆ mState

s32 sead::Thread::mState[1]
protected

◆ mCoreIdMask

u32 sead::Thread::mCoreIdMask
protected

◆ mThreadInner

OSThread* sead::Thread::mThreadInner
protected

◆ mStackTop

u8* sead::Thread::mStackTop
protected

◆ mPriority

s32 sead::Thread::mPriority
protected