kext: add hid/ir thread locking

This commit is contained in:
TuxSH
2020-07-07 23:27:15 +01:00
parent e69f89a0d4
commit 991f51831d
4 changed files with 58 additions and 28 deletions

View File

@@ -104,14 +104,26 @@ Result KernelSetStateHook(u32 type, u32 varg1, u32 varg2, u32 varg3)
__ldrex((s32 *)&rosalinaState);
}
while(__strex((s32 *)&rosalinaState, (s32)(rosalinaState ^ varg1)));
__dmb();
if(rosalinaState & 2)
hasStartedRosalinaNetworkFuncsOnce = true;
if(rosalinaState & 1)
rosalinaLockAllThreads();
else if(varg1 & 1)
rosalinaUnlockAllThreads();
// 1: all applet/app/gsp/dsp... threads 4: hid/ir
if(varg1 & 1)
{
if (rosalinaState & 1)
rosalinaLockThreads(1);
else
rosalinaUnlockThreads(1);
}
if(varg1 & 4)
{
if (rosalinaState & 4)
rosalinaLockThreads(4);
else
rosalinaUnlockThreads(4);
}
break;
}