62 lines
945 B
C++
62 lines
945 B
C++
#include "Precompiled.h"
|
|
|
|
|
|
|
|
|
|
#include "RakiEngine/System/RakiThread.h"
|
|
|
|
|
|
#include "RakiEngine/System/ThreadBase/ThreadBase.h"
|
|
|
|
|
|
|
|
namespace raki
|
|
{
|
|
|
|
#define STACK_SIZE (0x200*8)
|
|
#define PRIORITY 2
|
|
static u8 s_stack[STACK_SIZE] ATTRIBUTE_ALIGN(32);
|
|
static bool s_used = false;
|
|
OSThread th;
|
|
|
|
static void * uniqueThread( void * _data )
|
|
{
|
|
RAKI_ASSERT( _data );
|
|
|
|
ThreadBase * object = (ThreadBase*) _data;
|
|
|
|
Thread::theThread( object );
|
|
|
|
return NULL;
|
|
}
|
|
|
|
|
|
void Thread::theThread( ThreadBase * _object )
|
|
{
|
|
_object->internalRun();
|
|
s_used = true;
|
|
|
|
}
|
|
|
|
bool Thread::beginThread( ThreadBase * _object )
|
|
{
|
|
OSCreateThread( &th, uniqueThread, _object,
|
|
s_stack + STACK_SIZE, STACK_SIZE,
|
|
PRIORITY, OS_THREAD_ATTR_DETACH);
|
|
|
|
OSResumeThread(&th);
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
void Thread::sleep( u32 _milliseconds )
|
|
{
|
|
OSSleepMilliseconds( _milliseconds );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|