78 строки
1.9 KiB
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);
|
|
}
|