From: Etaash Mathamsetty etaash.mathamsetty@gmail.com
--- dlls/ntoskrnl.exe/ntoskrnl.c | 22 ++++++++++++++++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 9320e02dca9..ce81476760a 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2344,6 +2344,28 @@ void WINAPI ExDeleteNPagedLookasideList( PNPAGED_LOOKASIDE_LIST lookaside ) delete_lookaside_list( &lookaside->L ); }
+/*********************************************************************** + * ExInterlockedInsertTailList (NTOSKRNL.EXE.@) + */ +PLIST_ENTRY WINAPI ExInterlockedInsertTailList( PLIST_ENTRY head, PLIST_ENTRY entry, PKSPIN_LOCK lock ) +{ + PLIST_ENTRY ret; + KIRQL irql; + + TRACE( "(%p %p %p)\n", head, entry, lock ); + + if ( !head || !entry || !lock || !head->Flink || !head->Blink || !entry->Flink || !entry->Blink ) + return NULL; + + KeAcquireSpinLock( lock, &irql ); + + ret = head->Blink; + InsertTailList( head, entry ); + + KeReleaseSpinLock( lock, irql ); + + return ret; +}
/*********************************************************************** * ExDeletePagedLookasideList (NTOSKRNL.EXE.@) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index 8f8edcac7a0..f5c2e663132 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -167,7 +167,7 @@ @ stub ExInterlockedExtendZone @ stub ExInterlockedIncrementLong @ stub ExInterlockedInsertHeadList -@ stub ExInterlockedInsertTailList +@ stdcall ExInterlockedInsertTailList(ptr ptr ptr) @ stub ExInterlockedPopEntryList @ stub ExInterlockedPushEntryList @ stdcall ExInterlockedRemoveHeadList(ptr ptr)