mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-15 06:10:58 -04:00
Irqmgr + scheduler Docs (#1527)
* irqmgr docs * Sched_FlushTaskQueue * scheduler docs
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#include "scheduler.h"
|
||||
|
||||
#include "macros.h"
|
||||
#include "main.h"
|
||||
|
||||
/**
|
||||
* Blocks the current thread until all queued scheduler tasks have completed.
|
||||
*/
|
||||
void Sched_FlushTaskQueue(void) {
|
||||
OSScTask task;
|
||||
OSMesgQueue queue;
|
||||
OSMesg msg[1];
|
||||
|
||||
// Prepare a "NULL" task
|
||||
task.next = NULL;
|
||||
task.flags = OS_SC_NEEDS_RDP | OS_SC_NEEDS_RSP;
|
||||
task.msgQ = &queue;
|
||||
task.msg = NULL;
|
||||
task.framebuffer = NULL;
|
||||
task.list.t.type = M_NULTASK;
|
||||
osCreateMesgQueue(task.msgQ, msg, ARRAY_COUNT(msg));
|
||||
|
||||
// Send it to and wake up the scheduler
|
||||
osSendMesg(&gScheduler.cmdQueue, (OSMesg)&task, OS_MESG_BLOCK);
|
||||
Sched_SendNotifyMsg(&gScheduler);
|
||||
|
||||
// Wait until the task has been processed, indicating that no task is
|
||||
// running and the task queue is now empty.
|
||||
osRecvMesg(&queue, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
Reference in New Issue
Block a user