OS_WakeupThread

構文

#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 初版