summaryrefslogtreecommitdiff
path: root/network/netadaptercx/netvadapterlibrary/code/memory.cpp
diff options
context:
space:
mode:
authorYang You (UU) <[email protected]>2025-12-04 15:30:32 -0800
committerYang You (UU) <[email protected]>2025-12-04 15:30:32 -0800
commit10835ebc2bc4a774907fb47880ffc366b159622c (patch)
tree7cfd1d9508a9a9c216706269a37cddb9db61299c /network/netadaptercx/netvadapterlibrary/code/memory.cpp
parent977cb2461482a898f96ee08f9cb24eb7f421da03 (diff)
Cleanup the KSpinlock.h and replace with WDFSpinlock
Diffstat (limited to 'network/netadaptercx/netvadapterlibrary/code/memory.cpp')
-rw-r--r--network/netadaptercx/netvadapterlibrary/code/memory.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/network/netadaptercx/netvadapterlibrary/code/memory.cpp b/network/netadaptercx/netvadapterlibrary/code/memory.cpp
index 0c010d59..b7536531 100644
--- a/network/netadaptercx/netvadapterlibrary/code/memory.cpp
+++ b/network/netadaptercx/netvadapterlibrary/code/memory.cpp
@@ -34,6 +34,13 @@ Memory::Initialize(
}
m_lastBufferToUse = PREALLOCATED_BUFFERS_COUNT;
+ // Create WDF spinlock for the queue, parent to the queue's WDF handle
+ {
+ WDF_OBJECT_ATTRIBUTES attributes;
+ WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
+ status = WdfSpinLockCreate(&attributes, &m_spinLock);
+ NT_ASSERT(NT_SUCCESS(status));
+ }
return STATUS_SUCCESS;
}
@@ -56,14 +63,17 @@ Memory::PopAvailableBuffer(
void
)
{
- KAcquireSpinLock lock{ m_spinLock };
+ WdfSpinLockAcquire(m_spinLock);
if (m_lastBufferToUse == 0)
{
+ WdfSpinLockRelease(m_spinLock);
return nullptr;
}
+ auto returnbuffer = m_buffersReadyToUse[--m_lastBufferToUse];
+ WdfSpinLockRelease(m_spinLock);
- return m_buffersReadyToUse[--m_lastBufferToUse];
+ return returnbuffer;
}
void
@@ -71,11 +81,12 @@ Memory::ReturnBuffer(
MemoryBuffer* Buffer
)
{
- KAcquireSpinLock lock{ m_spinLock };
+ WdfSpinLockAcquire(m_spinLock);
NT_FRE_ASSERT(m_lastBufferToUse < PREALLOCATED_BUFFERS_COUNT);
m_buffersReadyToUse[m_lastBufferToUse++] = Buffer;
+ WdfSpinLockRelease(m_spinLock);
}
#endif //NETCX 2.6 only