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

thread.h File Reference


Detailed Description

Thread management definitions.

 *
 * $Log: thread.h,v $
 * Revision 1.15  2006/09/29 12:24:14  haraldkipp
 * Stack allocation code moved from thread module to heap module.
 * All code should use dedicated stack allocation routines. For targets
 * allocating stack from the normal heap the API calls are remapped by
 * preprocessor macros.
 *
 * Revision 1.14  2006/06/29 03:52:19  hwmaier
 * Added include statement for cfg/memory.h so the macro
 * NUTMEM_STACKHEAP is found when compiling for the
 * AT90CAN128.
 *
 * Revision 1.13  2006/06/28 14:35:31  haraldkipp
 * Event/thread/timer re-design.
 * Code indention corrected.
 * Volatile attribute removed from THREADINFO link pointer.
 *
 * Revision 1.12  2006/03/16 15:25:34  haraldkipp
 * Changed human readable strings from u_char to char to stop GCC 4 from
 * nagging about signedness.
 *
 * Revision 1.11  2005/10/07 21:48:25  hwmaier
 * Using __AVR_ENHANCED__ macro instead of __AVR_ATmega128__ to support also AT90CAN128 MCU
 *
 * Revision 1.10  2005/10/04 05:25:17  hwmaier
 * Added support for separating stack and conventional heap as required by AT09CAN128 MCUs
 *
 * Revision 1.9  2005/08/02 17:46:49  haraldkipp
 * Major API documentation update.
 *
 * Revision 1.8  2005/07/26 15:49:59  haraldkipp
 * Cygwin support added.
 *
 * Revision 1.7  2005/02/17 14:42:37  phblum
 * Removed volatile declarations of runQueue since it is not touched from interrupt context. Same for nutThreadList, runningThread and killedThreads.
 *
 * Revision 1.6  2005/02/16 19:53:15  haraldkipp
 * Ready-to-run queue handling removed from interrupt context.
 *
 * Revision 1.5  2004/07/09 19:51:34  freckle
 * Added new function NutThreadSetSleepMode to tell nut/os to set the MCU
 * into sleep mode when idle (avr-gcc && avr128 only)
 *
 * Revision 1.4  2004/04/07 12:13:57  haraldkipp
 * Matthias Ringwald's *nix emulation added
 *
 * Revision 1.3  2004/03/16 16:48:44  haraldkipp
 * Added Jan Dubiec's H8/300 port.
 *
 * Revision 1.2  2003/12/15 19:28:26  haraldkipp
 * Kill function prototypes
 *
 * Revision 1.1.1.1  2003/05/09 14:41:22  haraldkipp
 * Initial using 3.2.1
 *
 * Revision 1.14  2003/02/04 18:00:54  harald
 * Version 3 released
 *
 * Revision 1.13  2002/10/29 15:40:50  harald
 * *** empty log message ***
 *
 * Revision 1.12  2002/06/26 17:29:29  harald
 * First pre-release with 2.4 stack
 *
 * 


Thread States

#define TDS_TERM   0
#define TDS_RUNNING   1
#define TDS_READY   2
#define TDS_SLEEP   3

Defines

#define DEADBEEF   0xDEADBEEF
#define SLEEP_MODE_NONE   0xff
#define THREAD(threadfn, arg)
 Macro for thread entry definitions.

Typedefs

typedef _NUTTHREADINFO NUTTHREADINFO

Functions

void NutThreadSetSleepMode (u_char mode)
 Sets the sleep mode to enter in Idle thread.
HANDLE NutThreadCreate (char *name, void(*fn)(void *), void *arg, size_t stackSize)
 Create a new thread.
u_char NutThreadSetPriority (u_char level)
 Set the current thread's priority.
void NutThreadKill (void)
 Kill the running thread.
void NutThreadDestroy (void)
 Free a thread that was previously killed and release memory back to the OS.
void NutThreadExit (void)
 End the current thread.
void NutThreadResume (void)
 Continue with the highest priority thread, which is ready to run.
void NutThreadWake (HANDLE timer, HANDLE th)
 Resume a previously suspended thread.
void NutThreadYield (void)
 Give up the CPU.
void NutThreadAddPriQueue (NUTTHREADINFO *td, NUTTHREADINFO *volatile *tqpp)
 Add a thread to a prioritiy ordered queue.
void NutThreadRemoveQueue (NUTTHREADINFO *td, NUTTHREADINFO *volatile *tqpp)
 Remove a thread from a specified queue.
void NutThreadSwitch (void)
 Switch to another thread.
HANDLE GetThreadByName (char *name)
 Query handle of a thread with a specific name.

Variables

NUTTHREADINFOrunningThread
 Currently running thread.
NUTTHREADINFOnutThreadList
 List of all created threads.
NUTTHREADINFOrunQueue
 List of ready-to-run threads.


Define Documentation

#define TDS_TERM   0
 

Thread has exited.

#define TDS_RUNNING   1
 

Thread is running.

#define TDS_READY   2
 

Thread is ready to run.

#define TDS_SLEEP   3
 

Thread is sleeping.

#define THREAD threadfn,
arg   ) 
 

Value:

void threadfn(void *arg) __attribute__ ((noreturn)); \
void threadfn(void *arg)
Macro for thread entry definitions.

Examples:
events/events.c, ftpd/ftpserv.c, httpd/httpserv.c, portdio/portdio.c, threads/threads.c, and timers/timers.c.


© 2000-2006 by egnite Software GmbH - visit http://www.ethernut.de/