MCPcopy Create free account
hub / github.com/acidanthera/BrcmPatchRAM / processWorkQueue

Method processWorkQueue

BrcmPatchRAM/BrcmPatchRAM.cpp:439–470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

437}
438
439void BrcmPatchRAM::processWorkQueue(IOInterruptEventSource*, int)
440{
441 IOLockLock(mWorkLock);
442
443 // start firmware loading process in a non-workloop thread
444 if (mWorkPending & kWorkLoadFirmware)
445 {
446 DebugLog("_workPending kWorkLoadFirmware\n");
447 mWorkPending &= ~kWorkLoadFirmware;
448 retain();
449 kern_return_t result = kernel_thread_start(&BrcmPatchRAM::uploadFirmwareThread, this, &mWorker);
450 if (KERN_SUCCESS == result)
451 DebugLog("Success creating firmware uploader thread\n");
452 else
453 {
454 AlwaysLog("ERROR creating firmware uploader thread.\n");
455 release();
456 }
457 }
458
459 // firmware loading thread is finished
460 if (mWorkPending & kWorkFinished)
461 {
462 DebugLog("_workPending kWorkFinished\n");
463 mWorkPending &= ~kWorkFinished;
464 thread_deallocate(mWorker);
465 mWorker = 0;
466 release(); // matching retain when thread created successfully
467 }
468
469 IOLockUnlock(mWorkLock);
470}
471
472void BrcmPatchRAM::uploadFirmwareThread(void *arg, wait_result_t wait)
473{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected