MCPcopy Create free account
hub / github.com/cemu-project/Cemu / MPTermTaskQ

Function MPTermTaskQ

src/Cafe/OS/libs/coreinit/coreinit_MPQueue.cpp:186–205  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

184 }
185
186 bool MPTermTaskQ(MPTaskQ* taskq)
187 {
188 // workaround code for TMS
189 AcquireMPQLock(); // OSUninterruptibleSpinLock_Acquire(&taskq->spinlock);
190 //if ((uint32)taskq->taskReadyCount > 0 && taskq->state == MP_TASKQ_STATE_RUN)
191 if (taskq->state == MP_TASKQ_STATE_RUN)
192 {
193 taskq->state = MP_TASKQ_STATE_STOP;
194 }
195
196 while (taskq->taskRunCount != 0)
197 {
198 // wait for tasks to finish
199 ReleaseMPQLock(); // OSUninterruptibleSpinLock_Release(&taskq->spinlock);
200 OSYieldThread();
201 AcquireMPQLock(); // OSUninterruptibleSpinLock_Acquire(&taskq->spinlock);
202 }
203 ReleaseMPQLock(); // OSUninterruptibleSpinLock_Release(&taskq->spinlock);
204 return true;
205 }
206
207 bool MPGetTaskQInfo(MPTaskQ* taskq, MPTaskQInfo* info)
208 {

Callers

nothing calls this directly

Calls 1

OSYieldThreadFunction · 0.85

Tested by

no test coverage detected