#include <iris/os.h>
void OS_WakeupThread( OSThreadQueue* queue );
| queue | 復帰させるスレッドが登録されているのスレッドキューへのポインタ |
なし。
指定されたスレッドキュー中のスレッドを全て復帰します。
スレッドは、優先順位に従ってスケジューリングされます。優先順位は OS_CreateThreadでスレッドを作成するときに与えたもので、同じ優先度のスレッドはありません。
以下は OS_WakeupThread() を用いた例です。
(例)
#define THREAD1_PRIO 1
#define THREAD2_PRIO 2
#define STACK_SIZE 1024
void proc1( void );
void proc2( void );
OSThread thread1;
OSThread thread2;
OSThreadQueue queue;
u64 stack1[ STACK_SIZE / sizeof(u64) ];
u64 stack2[ STACK_SIZE / sizeof(u64) ];
void IrisMain()
{
:
OS_InitThread();
OS_InitThreadQueue( &queue );
OS_CreateThread( &thread1, proc1, stack1+STACK_SIZE/sizeof(u64), STACK_SIZE, THREAD1_PRIO );
OS_CreateThread( &thread2, proc2, stack2+STACK_SIZE/sizeof(u64), STACK_SIZE, THREAD2_PRIO );
OS_WakeUpThreadDirect( &thread1 );
OS_WakeUpThreadDirect( &thread2 );
:
while(1)
{
:
OS_WakeupThread( &queue );
:
}
}
void proc1( void )
{
while(1)
{
:
OS_SleepThread( &queue );
:
}
}
void proc2( void )
{
while(1)
{
:
OS_SleepThread( &queue );
:
}
}
OS_InitThread, OS_CreateThread, OS_SleepThread, OS_WakeupThreadDirect
2003/12/01 初版