thread.h File Reference


Detailed Description

Thread management definitions.

 *
 * $Log: thread.h,v $
 * Revision 1.16  2007/06/14 07:24:38  freckle
 * Disable ADC and buskeeper during idle thread sleep, if IDLE_THREAD_ADC_OFF and IDLE_THREAD_BUSKEEPER_OFF are defined
 *
 * 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
 *
 * 

Definition in file thread.h.

Go to the source code of this file.

Data Structures

struct  _NUTTHREADINFO
 Thread information structure. More...

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

u_char 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 DEADBEEF   0xDEADBEEF

Examples:
httpd/httpserv.c, portdio/portdio.c, pppc/pppc.c, and tcps/tcps.c.

Definition at line 131 of file thread.h.

Referenced by NutDumpThreadList(), NutDumpThreadQueue(), NutThreadCreate(), and ProcessRequests().

#define TDS_TERM   0

Thread has exited.

Examples:
portdio/portdio.c, pppc/pppc.c, and tcps/tcps.c.

Definition at line 176 of file thread.h.

Referenced by ProcessRequests().

#define TDS_RUNNING   1

Thread is running.

Examples:
portdio/portdio.c, pppc/pppc.c, and tcps/tcps.c.

Definition at line 177 of file thread.h.

Referenced by NutSleep(), NutThreadCreate(), NutThreadResume(), NutThreadSetPriority(), NutThreadSwitch(), and ProcessRequests().

#define TDS_READY   2

Thread is ready to run.

Examples:
portdio/portdio.c, pppc/pppc.c, and tcps/tcps.c.

Definition at line 178 of file thread.h.

Referenced by NutEventPostAsync(), NutEventTimeout(), NutThreadCreate(), NutThreadResume(), NutThreadSetPriority(), NutThreadWake(), and ProcessRequests().

#define TDS_SLEEP   3

Thread is sleeping.

Examples:
portdio/portdio.c, pppc/pppc.c, and tcps/tcps.c.

Definition at line 179 of file thread.h.

Referenced by NutEventWait(), NutSleep(), and ProcessRequests().

#define SLEEP_MODE_NONE   0xff

Definition at line 182 of file thread.h.

Referenced by NutIdle().

#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, rs232d/rs232d.c, threads/threads.c, and timers/timers.c.

Definition at line 218 of file thread.h.


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