aboutsummaryrefslogtreecommitdiffstats
path: root/api/session.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-10-30 16:58:50 +0100
committerSimon Rozman <simon@rozman.si>2020-10-31 19:11:50 +0100
commitf947205cee76a1ae9ddf555d7e2a45675fe333fd (patch)
tree2d70011349690078863efeedf066f26600603179 /api/session.c
parentapi: rework pool hashing (diff)
downloadwintun-f947205cee76a1ae9ddf555d7e2a45675fe333fd.tar.xz
wintun-f947205cee76a1ae9ddf555d7e2a45675fe333fd.zip
api: use proper iso atomic semantics
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r--api/session.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/api/session.c b/api/session.c
index 71849c3..e39f21b 100644
--- a/api/session.c
+++ b/api/session.c
@@ -172,7 +172,7 @@ WintunReceivePacket(_In_ TUN_SESSION *Session, _Out_bytecapcount_(*PacketSize) B
Result = ERROR_HANDLE_EOF;
goto cleanup;
}
- const ULONG BuffTail = InterlockedGetU(&Session->Descriptor.Send.Ring->Tail);
+ const ULONG BuffTail = ReadULongAcquire(&Session->Descriptor.Send.Ring->Tail);
if (BuffTail >= Session->Capacity)
{
Result = ERROR_HANDLE_EOF;
@@ -226,7 +226,7 @@ WintunReceiveRelease(_In_ TUN_SESSION *Session, _In_ const BYTE *Packet)
Session->Send.HeadRelease = TUN_RING_WRAP(Session->Send.HeadRelease + AlignedPacketSize, Session->Capacity);
Session->Send.PacketsToRelease--;
}
- InterlockedSetU(&Session->Descriptor.Send.Ring->Head, Session->Send.HeadRelease);
+ WriteULongRelease(&Session->Descriptor.Send.Ring->Head, Session->Send.HeadRelease);
LeaveCriticalSection(&Session->Send.Lock);
}
@@ -241,7 +241,7 @@ WintunAllocateSendPacket(_In_ TUN_SESSION *Session, _In_ DWORD PacketSize, _Out_
goto cleanup;
}
const ULONG AlignedPacketSize = TUN_ALIGN(sizeof(TUN_PACKET) + PacketSize);
- const ULONG BuffHead = InterlockedGetU(&Session->Descriptor.Receive.Ring->Head);
+ const ULONG BuffHead = ReadULongAcquire(&Session->Descriptor.Receive.Ring->Head);
if (BuffHead >= Session->Capacity)
{
Result = ERROR_HANDLE_EOF;
@@ -281,8 +281,8 @@ WintunSendPacket(_In_ TUN_SESSION *Session, _In_ const BYTE *Packet)
TUN_RING_WRAP(Session->Receive.TailRelease + AlignedPacketSize, Session->Capacity);
Session->Receive.PacketsToRelease--;
}
- InterlockedSetU(&Session->Descriptor.Receive.Ring->Tail, Session->Receive.TailRelease);
- if (InterlockedGet(&Session->Descriptor.Receive.Ring->Alertable))
+ WriteULongRelease(&Session->Descriptor.Receive.Ring->Tail, Session->Receive.TailRelease);
+ if (ReadAcquire(&Session->Descriptor.Receive.Ring->Alertable))
SetEvent(Session->Descriptor.Receive.TailMoved);
LeaveCriticalSection(&Session->Receive.Lock);
}