4#include <container/seadTList.h>
5#include <heap/seadDisposer.h>
6#include <heap/seadHeap.h>
7#include <hostio/seadHostIODummy.h>
8#include <prim/seadNamable.h>
9#include <thread/seadMessageQueue.h>
10#include <thread/seadThreadLocalStorage.h>
11#include <time/seadTickSpan.h>
14#include <cafe/os/OSThread.h>
90 void*
getStackBottom()
const {
return PtrUtil::addOffset(mStackTop, mStackSize); }
113static_assert(
sizeof(
Thread) == 0x90,
"sead::Thread size mismatch");
148static_assert(
sizeof(
ThreadMgr) == 0x28,
"sead::ThreadMgr size mismatch");
Definition seadCoreInfo.h:96
Definition seadDisposer.h:12
Definition seadNamable.h:9
Definition seadMessageQueue.h:15
s32 Element
Definition seadMessageQueue.h:23
BlockType
Definition seadMessageQueue.h:18
@ cNoBlock
Definition seadMessageQueue.h:20
Definition seadTList.h:13
Definition seadTList.h:49
Definition seadThreadLocalStorage.h:9
Definition seadThread.h:117
Thread * mMainThread
Definition seadThread.h:144
void destroyMainThread_()
ThreadLocalStorage mThreadPtrTLS
Definition seadThread.h:145
static void quitAndWaitDoneMultipleThread(Thread **, s32, bool)
Thread * getCurrentThread() const
Definition seadThread.h:154
Thread * getMainThread() const
Definition seadThread.h:130
ThreadList mList
Definition seadThread.h:143
ThreadList::constIterator constBegin() const
Definition seadThread.h:132
void initMainThread_(Heap *)
ThreadList::constIterator constEnd() const
Definition seadThread.h:133
bool isMainThread() const
static void waitDoneMultipleThread(Thread *const *, s32)
Definition seadThread.h:28
MessageQueue::Element getQuitMsg() const
Definition seadThread.h:94
virtual void quitAndWaitDoneSingleThread(bool is_jam)
Thread(Heap *, OSThread *)
virtual s32 getStackSize() const
Definition seadThread.h:71
static const MessageQueue::BlockType cDefaultBlockType
Definition seadThread.h:33
void * getStackBottom() const
Definition seadThread.h:90
const Thread & operator=(const Thread &)
MessageQueue::Element mQuitMsg
Definition seadThread.h:102
virtual u32 * getStackCheckStartAddress_() const
static void sleep(TickSpan span)
static const MessageQueue::Element cDefaultQuitMsg
Definition seadThread.h:34
virtual bool sendMessage(MessageQueue::Element, MessageQueue::BlockType)
virtual void setPriority(s32)
const CoreIdMask & getAffinity() const
virtual MessageQueue::BlockType getBlockType() const
Definition seadThread.h:70
ThreadListNode * getListNode()
MessageQueue::BlockType mBlockType
Definition seadThread.h:101
static const s32 cDefaultPriority
Definition seadThread.h:31
MessageQueue mMessageQueue
Definition seadThread.h:97
void checkStackOverFlow()
s32 mStackSize
Definition seadThread.h:98
virtual s32 getPriority() const
static const s32 cDefaultSeadPriority
Definition seadThread.h:30
Heap * getCurrentHeap() const
Definition seadThread.h:67
static const s32 cDefaultStackSize
Definition seadThread.h:35
void * getStackTop() const
Definition seadThread.h:89
u8 * mStackTop
Definition seadThread.h:109
u32 getID() const
Definition seadThread.h:66
virtual MessageQueue::Element recvMessage(MessageQueue::BlockType)
u32 mID
Definition seadThread.h:103
void setAffinity(const CoreIdMask &)
virtual void destroy()
Definition seadThread.h:55
s32 mPriority
Definition seadThread.h:110
Heap * mCurrentHeap
Definition seadThread.h:100
ThreadListNode mListNode
Definition seadThread.h:99
virtual void calc_(MessageQueue::Element)=0
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 void quitAndDestroySingleThread(bool is_jam)
Definition seadThread.h:62
virtual s32 calcStackUsedSizePeak() const
s32 mState[1]
Definition seadThread.h:104
static const s32 cDefaultMsgQueueSize
Definition seadThread.h:36
void setCurrentHeap_(Heap *)
s32 getState() const
Definition seadThread.h:93
u32 mCoreIdMask
Definition seadThread.h:105
Definition seadTickSpan.h:12
Definition seadHostIODummy.h:25
Definition seadAssert.h:44
TList< Thread * > ThreadList
Definition seadThread.h:22
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
TListNode< Thread * > ThreadListNode
Definition seadThread.h:23
#define SEAD_SINGLETON_DISPOSER(CLASS)
Definition seadDisposer.h:29