Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages   Examples  

XgThread


Data Structures

struct  _NUTTHREADINFO
 Thread information structure. More...

struct  _NUTTHREADINFO
 Thread information structure. More...

struct  ENTERFRAME
struct  SWITCHFRAME

Typedefs

typedef _NUTTHREADINFO NUTTHREADINFO

Functions

void NutThreadAddPriQueue (NUTTHREADINFO *td, NUTTHREADINFO **tqpp)
 Add a thread to a prioritiy ordered queue.

void NutThreadRemoveQueue (NUTTHREADINFO *td, NUTTHREADINFO *volatile *tqpp)
 Remove a thread from a specified queue.

void NutThreadResumeAsync (HANDLE th)
 Make a previously suspended thread ready to run.

void NutThreadWake (HANDLE timer, HANDLE th)
 Resume a previously suspended thread.

void NutThreadYield (void)
 Give up the CPU.

u_char NutThreadSetPriority (u_char level)
 Set the current thread's priority.

HANDLE NutThreadCreate (u_char *name, void(*fn)(void *), void *arg, u_short stackSize)
 Create a new thread.


Variables

NUTTHREADINFO *volatile runningThread = 0
 Currently running thread.

NUTTHREADINFO *volatile nutThreadList = 0
 List of all created threads.

NUTTHREADINFO *volatile runQueue = 0
 List of ready-to-run threads.


Typedef Documentation

typedef struct _NUTTHREADINFO NUTTHREADINFO
 

Thread information structure type.


Function Documentation

void NutThreadAddPriQueue NUTTHREADINFO   td,
NUTTHREADINFO **    tqpp
 

Add a thread to a prioritiy ordered queue.

Insert the thread into a specified queue behind the last thread with lower or equal priority.

Note:
CPU interrupts must have been disabled before calling this function.
Parameters:
td  Pointer to NUTTHREADINFO of the thread to be inserted in the queue.
tqpp  Pointer to the root of the queue.

HANDLE NutThreadCreate u_char   name,
void(*    fn)(void *),
void *    arg,
u_short    stackSize
 

Create a new thread.

If the current thread's priority is lower or equal than the default priority (64), then the current thread is stopped and the new one is started.

Parameters:
name  String containing the symbolic name of the new thread, up to 8 characters long.
fn  The thread's entry point, typically created by the THREAD macro.
arg  Argument pointer passed to the new thread.
stackSize  Number of bytes of the stack space allocated for the new thread.

void NutThreadRemoveQueue NUTTHREADINFO   td,
NUTTHREADINFO *volatile *    tqpp
 

Remove a thread from a specified queue.

CPU interrupts must have been disabled before calling this function.

Parameters:
td  Pointer to NUTTHREADINFO of the thread to be removed from the queue.
tqpp  Pointer to the root of the queue.

void NutThreadResumeAsync HANDLE    th
 

Make a previously suspended thread ready to run.

Parameters:
th  Handle of the thread to resume.
Note:
CPU interrupts must have been disabled before calling this function. It is save to call this function from within an interrupt handler.

u_char NutThreadSetPriority u_char    level
 

Set the current thread's priority.

The priority of newly created threads is set to 64, but may be changed when the thread starts running.

When another thread with a higher or equal priority is ready to run, the current thread will be stopped and control of the CPU is passed to the other thread.

The function returns the old priority, which makes it easy to temporarily switch to another priority and later set back the old one.

Parameters:
level  New priority level.
Returns:
The old priority of this thread.

void NutThreadWake HANDLE    timer,
HANDLE    th
 

Resume a previously suspended thread.

This routine is called by the system when a sleep timer elapses.

Note:
This routine is running in interrupt context. Applications typically do not call this function. In any case interrupts must have been disabled.
Parameters:
timer  Handle of the elapsed timer.
th  Handle of the thread to wake up.

void NutThreadYield void   
 

Give up the CPU.

If another thread within the same or higher priority is ready to run, then the current thread is stopped and the other one is started.


Variable Documentation

NUTTHREADINFO* volatile nutThreadList = 0
 

List of all created threads.

Linked list of NUTTHREADINFO structures of all threads. New threads are put in front. This list contains at least two threads, the main application thread followed by the idle thread.

NUTTHREADINFO* volatile runningThread = 0
 

Currently running thread.

Pointer to the NUTTHREADINFO structure of the currently running thread.

NUTTHREADINFO* volatile runQueue = 0
 

List of ready-to-run threads.

Priority ordered linked list of NUTTHREADINFO structures of all threads which are ready to run.


Generated on Thu Jan 30 22:30:59 2003 for EduNet by doxygen1.2.18