Hey!
Ich plane gerade, mir einen kleinen Kernel zu schreiben. Da meine Planung eigentlich nur einen Task vorsieht, dachte ich daran, kooperatives Multitasking einzubauen. Ich weiß, dass es nicht immer die beste Wahl ist, aber für den Anfang reicht mir das voll und ganz aus.
Mein Vorgehen wäre nun folgendes:
struct task
void *
void *stack
uint32_t stackpointer
task_wechseln
task-stackpointer sichern
nächsten task auswählen
task-stackpointer wiederherstellen
Die Funktion darf halt keine lokalen variablen (außer static) enthalten, da ich so keine sonstigen änderungen am stackpointer vornehmen.
Das sollet doch eigentlich keine Probleme machen oder habe ich irgendetwas grundlegendes vergessen?
Gruß
Felix