OS_CreateThread

構文

#include <iris/os.h>
void OS_CreateThread(
     OSThread*  thread,
     void        (*func)(void),
     void*       stack,
     u32         stackSize,
     u32         prio );
  

引数

thread 初期化するスレッド構造体へのポインタ
func 実行を開始する関数へのポインタ
stack スタックポインタの開始アドレス。スタックは下位方向に積まれていくので、 これは、スタックの最上位の位置にしなければならない点に注意してください。 アドレスは4バイトアラインメントされたものである必要があります。
stackSize スタックのサイズ。単位はバイトです。4の倍数である必要があります。
prio スレッドの優先順位。 0 がもっとも高い優先順位で、7 が最も低い優先順位です。
OSInitThread を呼び出したスレッドは、優先順位 7 を持ちます。
GAMECUBE と違い同じ優先順位を持つスレッドを作成することは許されていません。

返り値

なし。

説明

スレッドを作成します。
IRIS では作成できるスレッドの数を 8 つに制限しています。これは iris/os/thread.hOS_THREAD_MAX_NUM で定義されています。ここの値を変更することで 32 個までのスレッドを作成することが可能です。

この関数で作成された直後のスレッドは休止状態になっていますので、OS_WakeupThreadDirect() で明示的に動作状態にしてやる必要があります。

(例)
#define THREAD_PRIO 1
#define STACK_SIZE 1024
void proc( void );
OS_Thread thread;
u64 stack[ STACK_SIZE / sizeof(u64) ];

void IrisMain()
{
 :
 OS_InitThread();
 OS_CreateThread( &thread, proc, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO );
 OS_WakeUpThreadDirect( &thread );
 :
}

void proc( void )
{
 :
}

参照

OS_InitThread, OS_SleepThread, OS_WakeupThread, OS_WakeupThreadDirect

履歴

2003/12/01 初版