1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-13 11:24:40 +00:00
oot/src/code/z_nulltask.c
Tharo 1738b19d63
More documentation for sched.c (#1219)
* More documentation for sched.c

* VI retrace -> vertical retrace, attempt to clarify comment in viconfig

* Further review changes, fix inconsistent capitalization of PreNMI (PRENMI -> PreNMI)

* Fix typo

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Change TaskSwapBuffer, change comment on OS_SC_DRAM_DLIST to unimplemented

* Rename SchedContext/gSchedContext to Scheduler/gScheduler

* Comments fixes

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>

* Format

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
2022-06-03 15:43:30 -04:00

27 lines
776 B
C

#include "global.h"
/**
* Blocks the current thread until all queued scheduler tasks have completed.
*/
void Sched_FlushTaskQueue(void) {
OSScTask task;
OSMesgQueue queue;
OSMesg msg;
// Prepare a "NULL" task
task.next = NULL;
task.flags = OS_SC_NEEDS_RDP | OS_SC_NEEDS_RSP;
task.msgQueue = &queue;
task.msg = NULL;
task.framebuffer = NULL;
task.list.t.type = M_NULTASK;
osCreateMesgQueue(task.msgQueue, &msg, 1);
// Send it to and wake up the scheduler
osSendMesg(&gScheduler.cmdQueue, (OSMesg)&task, OS_MESG_BLOCK);
Sched_Notify(&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);
}