#include <setjmp.h>
#include <stdint.h>
#include <config.h>
Functions | |
void | init_thread (void) |
void | start_sched (void) |
void | schedule (void) |
void | suspend (void) |
void | resume (struct thread *t) |
void | pause (uint16_t ms) |
void | yield (void) |
void | exit (int) |
uint8_t | create_thread (int(*func)(), uint16_t stacksize, uint8_t priority, char *name) |
void | halt (void) |
uint32_t | get_time (void) |
void | dump_threadstates () |
uint8_t create_thread | ( | int(*)() | func, | |
uint16_t | stacksize, | |||
uint8_t | priority, | |||
char * | name | |||
) |
Create a new thread. This routine will setup a new thread that will enter in 'func' and return immediately. When 'func' returns, the new thread will terminate (via exit).
func | Entry point of thread. | |
stacksize | Size (in bytes) of new thread. | |
priority | Priority of new thread. 0 = highest, 255 = lowest | |
name | Name of thread, used for debugging. |
void dump_threadstates | ( | ) |
Output to the UART the state of every thread.
void exit | ( | int | ) |
Terminate and exit the current thread. This will free the thread's stack space, but not any of it's dynamically allocated memory (malloc).
uint32_t get_time | ( | void | ) |
Return the number of milliseconds elapsed since startup.
void halt | ( | void | ) |
Stop everything.
void init_thread | ( | void | ) |
Initialize multithreading. Should not be called by user.
void pause | ( | uint16_t | ms | ) |
Pause a thread for 'ms' milliseconds. The calling thread will give up the processor until time expires. If interrupts are disabled, a busy loop will be used. The pause is best-effort and may last several milliseconds longer than specified. If threads pause frequently for short periods of time (1-4ms, depending) thread starvation may occur.
ms | Milliseconds to pause. |
void resume | ( | struct thread * | t | ) |
Load a thread and run it. Should not be called by user.
t | Thread to be run. |
void schedule | ( | void | ) |
Schedule a thread to run. Should not be called by user.
void start_sched | ( | void | ) |
Jump to scheduler, nuke the kstack. Should not be called by user.
void suspend | ( | void | ) |
Suspend the current thread and call the scheduler. Should not be called by user.
void yield | ( | void | ) |
Give up the processor to another thread until rescheduled.