private bool KernelToUserInt32(AMemory Memory, long Address, int Value) { if (Memory.IsMapped(Address)) { Memory.WriteInt32ToSharedAddr(Address, Value); return(true); } return(false); }
private void MutexUnlock(AMemory Memory, KThread CurrentThread, long MutexAddress) { KThread NewOwnerThread = CurrentThread.RelinquishMutex(MutexAddress, out int Count); int MutexValue = 0; if (NewOwnerThread != null) { MutexValue = NewOwnerThread.ThreadHandleForUserMutex; if (Count >= 2) { MutexValue |= HasListenersMask; } NewOwnerThread.SignaledObj = null; NewOwnerThread.ObjSyncResult = 0; NewOwnerThread.ReleaseAndResume(); } Memory.WriteInt32ToSharedAddr(MutexAddress, MutexValue); }