Context Switching
[System Support]

Context Switching for GNUARM. More...

Collaboration diagram for Context Switching:

Functions

void NutThreadSwitch (void)
 Switch to another thread.
HANDLE NutThreadCreate (char *name, void(*fn)(void *), void *arg, size_t stackSize)
 Create a new thread.

Detailed Description

Context Switching for GNUARM.

This code should work with other GCC distributions for the ARM CPU.


Function Documentation

void NutThreadSwitch ( void   ) 

Switch to another thread.

Stop the current thread, saving its context. Then start the one with the highest priority, which is ready to run.

Application programs typically do not call this function.

Note:
CPU interrupts must be disabled before calling this function.

Definition at line 168 of file context.c.

References runningThread, runQueue, and TDS_RUNNING.

HANDLE NutThreadCreate ( char *  name,
void(*)(void *)  fn,
void *  arg,
size_t  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.
Note:
The thread must run in ARM mode. Thumb mode is not supported.
Returns:
Pointer to the NUTTHREADINFO structure or 0 to indicate an error.

Definition at line 238 of file context.c.

References ARM_CPSR_F_BIT, ARM_CPSR_I_BIT, ARM_MODE_SYS, DEADBEEF, memcpy(), NutEnterCritical, NutExitCritical, NutHeapAlloc, NutThreadAddPriQueue(), nutThreadList, NutThreadSwitch(), runningThread, runQueue, TDS_READY, and TDS_RUNNING.


© 2000-2010 by contributors - visit http://www.ethernut.de/