* * $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 * *
#include <sys/types.h>
#include <cfg/memory.h>
Data Structures | |
struct | _NUTTHREADINFO |
Thread information structure. More... | |
Thread States | |
#define | TDS_READY 2 |
#define | TDS_RUNNING 1 |
#define | TDS_SLEEP 3 |
#define | TDS_TERM 0 |
Defines | |
#define | DEADBEEF 0xDEADBEEF |
#define | SLEEP_MODE_NONE 0xff |
#define | THREAD(threadfn, arg) |
Macro for thread entry definitions. | |
Typedefs | |
typedef _NUTTHREADINFO | NUTTHREADINFO |
Functions | |
HANDLE | GetThreadByName (char *name) |
Query handle of a thread with a specific name. | |
void | NutThreadAddPriQueue (NUTTHREADINFO *td, NUTTHREADINFO *volatile *tqpp) |
Add a thread to a prioritiy ordered queue. | |
__BEGIN_DECLS HANDLE | NutThreadCreate (char *name, void(*fn)(void *), void *arg, size_t stackSize) |
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 | NutThreadKill (void) |
Kill the running thread. | |
void | NutThreadRemoveQueue (NUTTHREADINFO *td, NUTTHREADINFO *volatile *tqpp) |
Remove a thread from a specified queue. | |
void | NutThreadResume (void) |
Continue with the highest priority thread, which is ready to run. | |
u_char | NutThreadSetPriority (u_char level) |
Set the current thread's priority. | |
void | NutThreadSwitch (void) |
void | NutThreadWake (HANDLE timer, HANDLE th) |
Resume a previously suspended thread. | |
void | NutThreadYield (void) |
Give up the CPU. | |
Variables | |
NUTTHREADINFO * | nutThreadList |
List of all created threads. | |
NUTTHREADINFO * | runningThread |
Currently running thread. | |
NUTTHREADINFO * | runQueue |
List of ready-to-run threads. |
#define TDS_READY 2 |
Thread is ready to run.
#define TDS_RUNNING 1 |
Thread is running.
#define TDS_SLEEP 3 |
Thread is sleeping.
#define TDS_TERM 0 |
Thread has exited.
#define THREAD | ( | threadfn, | |||
arg | ) |
Value:
void threadfn(void *arg) __attribute__ ((noreturn)); \ void threadfn(void *arg)