ntoskrnl.exe: Implement APC-level fast mutex functions.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
ad1f270430
commit
e3856fd630
|
@ -727,34 +727,6 @@ done:
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* ExAcquireFastMutexUnsafe (NTOSKRNL.EXE.@)
|
|
||||||
*/
|
|
||||||
#ifdef DEFINE_FASTCALL1_ENTRYPOINT
|
|
||||||
DEFINE_FASTCALL1_ENTRYPOINT(ExAcquireFastMutexUnsafe)
|
|
||||||
void WINAPI __regs_ExAcquireFastMutexUnsafe(PFAST_MUTEX FastMutex)
|
|
||||||
#else
|
|
||||||
void WINAPI ExAcquireFastMutexUnsafe(PFAST_MUTEX FastMutex)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
FIXME("(%p): stub\n", FastMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* ExReleaseFastMutexUnsafe (NTOSKRNL.EXE.@)
|
|
||||||
*/
|
|
||||||
#ifdef DEFINE_FASTCALL1_ENTRYPOINT
|
|
||||||
DEFINE_FASTCALL1_ENTRYPOINT(ExReleaseFastMutexUnsafe)
|
|
||||||
void WINAPI __regs_ExReleaseFastMutexUnsafe(PFAST_MUTEX FastMutex)
|
|
||||||
#else
|
|
||||||
void WINAPI ExReleaseFastMutexUnsafe(PFAST_MUTEX FastMutex)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
FIXME("(%p): stub\n", FastMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* IoAllocateDriverObjectExtension (NTOSKRNL.EXE.@)
|
* IoAllocateDriverObjectExtension (NTOSKRNL.EXE.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -562,3 +562,41 @@ LIST_ENTRY * WINAPI ExInterlockedRemoveHeadList( LIST_ENTRY *list, KSPIN_LOCK *l
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ExAcquireFastMutexUnsafe (NTOSKRNL.EXE.@)
|
||||||
|
*/
|
||||||
|
#ifdef DEFINE_FASTCALL1_ENTRYPOINT
|
||||||
|
DEFINE_FASTCALL1_ENTRYPOINT(ExAcquireFastMutexUnsafe)
|
||||||
|
void WINAPI __regs_ExAcquireFastMutexUnsafe( FAST_MUTEX *mutex )
|
||||||
|
#else
|
||||||
|
void WINAPI ExAcquireFastMutexUnsafe( FAST_MUTEX *mutex )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
LONG count;
|
||||||
|
|
||||||
|
TRACE("mutex %p.\n", mutex);
|
||||||
|
|
||||||
|
count = InterlockedDecrement( &mutex->Count );
|
||||||
|
if (count < 0)
|
||||||
|
KeWaitForSingleObject( &mutex->Event, Executive, KernelMode, FALSE, NULL );
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ExReleaseFastMutexUnsafe (NTOSKRNL.EXE.@)
|
||||||
|
*/
|
||||||
|
#ifdef DEFINE_FASTCALL1_ENTRYPOINT
|
||||||
|
DEFINE_FASTCALL1_ENTRYPOINT(ExReleaseFastMutexUnsafe)
|
||||||
|
void WINAPI __regs_ExReleaseFastMutexUnsafe( FAST_MUTEX *mutex )
|
||||||
|
#else
|
||||||
|
void WINAPI ExReleaseFastMutexUnsafe( FAST_MUTEX *mutex )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
LONG count;
|
||||||
|
|
||||||
|
TRACE("mutex %p.\n", mutex);
|
||||||
|
|
||||||
|
count = InterlockedIncrement( &mutex->Count );
|
||||||
|
if (count < 1)
|
||||||
|
KeSetEvent( &mutex->Event, IO_NO_INCREMENT, FALSE );
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue