lwp.h File Reference

Thread subsystem I. More...

#include <gctypes.h>

Defines

#define LWP_CLOSED   -1
#define LWP_SUCCESSFUL   0
#define LWP_ALLREADY_SUSPENDED   1
#define LWP_NOT_SUSPENDED   2
#define LWP_PRIO_IDLE   0
#define LWP_PRIO_HIGHEST   127
#define LWP_THREAD_NULL   0xffffffff
#define LWP_TQUEUE_NULL   0xffffffff

Typedefs

typedef u32 lwp_t
 typedef for the thread context handle
typedef u32 lwpq_t
 typedef for the thread queue's context handle

Functions

s32 LWP_CreateThread (lwp_t *thethread, void *(*entry)(void *), void *arg, void *stackbase, u32 stack_size, u8 prio)
 Spawn a new thread with the given parameters.
s32 LWP_SuspendThread (lwp_t thethread)
 Suspend the given thread.
s32 LWP_ResumeThread (lwp_t thethread)
 Resume the given thread.
BOOL LWP_ThreadIsSuspended (lwp_t thethread)
 Test whether the given thread is suspended or not.
lwp_t LWP_GetSelf ()
 Return the handle to the current thread.
void LWP_SetThreadPriority (lwp_t thethread, u32 prio)
 Set the priority of the given thread.
void LWP_YieldThread ()
 Yield the current thread to another one with higher priority or if not running at the same priority which state is runnable.
void LWP_Reschedule (u32 prio)
 Reschedule all threads running at the given priority.
s32 LWP_JoinThread (lwp_t thethread, void **value_ptr)
 Join the given thread.
s32 LWP_InitQueue (lwpq_t *thequeue)
 Initialize the thread synchronization queue.
void LWP_CloseQueue (lwpq_t thequeue)
 Close the thread synchronization queue and releas the handle.
s32 LWP_ThreadSleep (lwpq_t thequeue)
 Pushes the current thread onto the given thread synchronization queue and sets the thread state to blocked.
void LWP_ThreadSignal (lwpq_t thequeue)
 Signals one thread to be revmoved from the thread synchronization queue and sets it back to running state.
void LWP_ThreadBroadcast (lwpq_t thequeue)
 Removes all blocked threads from the thread synchronization queue and sets them back to running state.


Detailed Description

Thread subsystem I.


Function Documentation

void LWP_CloseQueue ( lwpq_t  thequeue  ) 

Close the thread synchronization queue and releas the handle.

Parameters:
[in] thequeue handle to the thread's synchronization queue
Returns:
none

s32 LWP_CreateThread ( lwp_t thethread,
void *(*)(void *)  entry,
void *  arg,
void *  stackbase,
u32  stack_size,
u8  prio 
)

Spawn a new thread with the given parameters.

Parameters:
[out] thethread pointer to a lwp_t handle
[in] entry pointer to the thread's entry function.
[in] arg pointer to an argument for the thread's entry function.
[in] stackbase pointer to the threads stackbase address. If NULL, the default STACKSIZE of 8Kb is taken.
[in] stack_size size of the provided stack. If 0, the default STACKSIZE of 8Kb is taken.
[in] prio priority on which the newly created thread runs.
Returns:
0 on success, <0 on error

lwp_t LWP_GetSelf (  ) 

Return the handle to the current thread.

Returns:
thread context handle

void LWP_InitQueue ( lwpq_t thequeue  ) 

Initialize the thread synchronization queue.

Parameters:
[in] thequeue pointer to a lwpq_t handle.
Returns:
0 on success, <0 on error

s32 LWP_JoinThread ( lwp_t  thethread,
void **  value_ptr 
)

Join the given thread.

Parameters:
[in] thethread handle to the thread's context which should be joined to wait on termination.
[in] value_ptr pointer-pointer to a variable to receive the return code of the terminated thread.
Returns:
0 on success, <0 on error

void LWP_Reschedule ( u32  prio  ) 

Reschedule all threads running at the given priority.

Parameters:
[in] prio priority level to reschedule
Returns:
none

s32 LWP_ResumeThread ( lwp_t  thethread  ) 

Resume the given thread.

Parameters:
[in] thethread handle to the thread context which should be resumed.
Returns:
0 on success, <0 on error

void LWP_SetThreadPriority ( lwp_t  thethread,
u32  prio 
)

Set the priority of the given thread.

Parameters:
[in] thethread handle to the thread context whos priority should be changed. If NULL, the current thread will be taken.
[in] prio new priority to set
Returns:
none

s32 LWP_SuspendThread ( lwp_t  thethread  ) 

Suspend the given thread.

Parameters:
[in] thethread handle to the thread context which should be suspended.
Returns:
0 on success, <0 on error

void LWP_ThreadBroadcast ( lwpq_t  thequeue  ) 

Removes all blocked threads from the thread synchronization queue and sets them back to running state.

Parameters:
[in] thequeue handle to the thread's synchronization queue to pop the blocked threads off
Returns:
none

BOOL LWP_ThreadIsSuspended ( lwp_t  thethread  ) 

Test whether the given thread is suspended or not.

Parameters:
[in] thethread handle to the thread context which should be tested.
Returns:
TRUE or FALSE

void LWP_ThreadSignal ( lwpq_t  thequeue  ) 

Signals one thread to be revmoved from the thread synchronization queue and sets it back to running state.

Parameters:
[in] thequeue handle to the thread's synchronization queue to pop the blocked thread off
Returns:
none

s32 LWP_ThreadSleep ( lwpq_t  thequeue  ) 

Pushes the current thread onto the given thread synchronization queue and sets the thread state to blocked.

Parameters:
[in] thequeue handle to the thread's synchronization queue to push the thread on
Returns:
none

void LWP_YieldThread (  ) 

Yield the current thread to another one with higher priority or if not running at the same priority which state is runnable.

Returns:
none


Generated on Sun Feb 4 18:14:34 2007 for libOGC by  doxygen 1.4.7