31 #include "mthread_conf.h"
35 #define THREAD_PRIO_HIGHEST 0
36 #define THREAD_PRIO_LOWEST (MTHREAD_PRIO_MAX-1)
39 #define TO_POLL 0x0000
42 #define MS_TO_TICKS(ms) (((ms))/(1000/MTHREAD_FREQ))
48 THREAD_WAITTIME = 0x03,
49 THREAD_TIMEOUT_READY = 0x04
53 typedef struct _thread_s {
58 uint16_t wait_timeout;
63 #define THREAD_FROM_RIVALS_CDLL(cdll) ((thread_t*)(((char*)cdll)-12))
68 extern volatile thread_t * running_thread;
70 typedef void thread_main_t(
void * arg);
97 void thread_delete(
thread_t * thread);
void thread_halt(thread_t *thread)
Den Thread anhalten, der Thread kann nur durch ein Signal wieder aufgeweckt werden.
void thread_changePriority(thread_t *thread, uint8_t priority)
Die Funktion ändert die Priorität des angegebenen Threads.
CDLL - Circular Double Linked List.
void thread_allowScheduling()
Die Funktion schaltet das Thread-Wechseln wieder ein.
void thread_init(thread_t *thread, void *stack, uint16_t stack_size)
Initialisiert die thread_t Datenstruktur mit den übergebenen Werten.
void thread_start(thread_t *thread, thread_main_t *mainFunc, void *arg)
Durch Aufruf der Funktion wird der Thread gestartet.
uint8_t thread_waitTimeout(uint16_t timeout)
Der aktuelle Thread wartet solange bis er ein Signal bekommt (durch Aufruf von thread_signal) oder bi...
static thread_t * thread_getCurrent()
Die Funktion liefert den aktuellen Thread zurück.
Definition: thread.h:172
void thread_signalISR(thread_t *thread)
Die Funktion sendet ein Signal an den angegebenen Thread aus einer Interruptroutine heraus...
void thread_startScheduler(uint8_t priority)
Durch den Aufruf dieser Funktion wird das Multithreading gestartet.
void thread_yield()
Die Funktion generiert bei Bedarf einen manuellen Kontextwechsel.
void thread_signal(thread_t *thread)
Die Funktion sendet ein Signal an den angegebenen Thread.
void thread_suppressScheduling()
Die Funktion verhindert das wechseln des aktuellen Threads.
void thread_wait()
Der aktuelle Thread wartet solange bis er ein Signal bekommt (durch Aufruf von thread_signal).