ebpf-for-windows/libs/platform/ebpf_interlocked.c

78 строки
1.9 KiB
C

// Copyright (c) Microsoft Corporation
// SPDX-License-Identifier: MIT
#include "ebpf_platform.h"
int32_t
ebpf_interlocked_or_int32(_Inout_ volatile int32_t* target, int32_t mask)
{
return InterlockedOr((volatile long*)target, mask);
}
int32_t
ebpf_interlocked_and_int32(_Inout_ volatile int32_t* target, int32_t mask)
{
return InterlockedAnd((volatile long*)target, mask);
}
int32_t
ebpf_interlocked_xor_int32(_Inout_ volatile int32_t* target, int32_t mask)
{
return InterlockedXor((volatile long*)target, mask);
}
int64_t
ebpf_interlocked_or_int64(_Inout_ volatile int64_t* target, int64_t mask)
{
return InterlockedOr64(target, mask);
}
int64_t
ebpf_interlocked_and_int64(_Inout_ volatile int64_t* target, int64_t mask)
{
return InterlockedAnd64(target, mask);
}
int64_t
ebpf_interlocked_xor_int64(_Inout_ volatile int64_t* target, int64_t mask)
{
return InterlockedXor64(target, mask);
}
int32_t
ebpf_interlocked_increment_int32(_Inout_ volatile int32_t* addend)
{
return InterlockedIncrement((volatile long*)addend);
}
int32_t
ebpf_interlocked_decrement_int32(_Inout_ volatile int32_t* addend)
{
return InterlockedDecrement((volatile long*)addend);
}
int64_t
ebpf_interlocked_increment_int64(_Inout_ volatile int64_t* addend)
{
return InterlockedIncrement64(addend);
}
int64_t
ebpf_interlocked_decrement_int64(_Inout_ volatile int64_t* addend)
{
return InterlockedDecrement64(addend);
}
int32_t
ebpf_interlocked_compare_exchange_int32(_Inout_ volatile int32_t* destination, int32_t exchange, int32_t comperand)
{
return InterlockedCompareExchange((long volatile*)destination, exchange, comperand);
}
void*
ebpf_interlocked_compare_exchange_pointer(
_Inout_ void* volatile* destination, _In_opt_ const void* exchange, _In_opt_ const void* comperand)
{
return InterlockedCompareExchangePointer((void* volatile*)destination, (void*)exchange, (void*)comperand);
}