diff options
Diffstat (limited to 'src/inc/unsafe.h')
-rw-r--r-- | src/inc/unsafe.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/inc/unsafe.h b/src/inc/unsafe.h new file mode 100644 index 0000000000..ba4a166fb1 --- /dev/null +++ b/src/inc/unsafe.h @@ -0,0 +1,102 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + + + + +#ifndef __UNSAFE_H__ +#define __UNSAFE_H__ + +// should we just check proper inclusion? +#include <winwrap.h> + +#include "staticcontract.h" + +inline VOID UnsafeEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +{ + STATIC_CONTRACT_LEAF; + EnterCriticalSection(lpCriticalSection); +} + +inline VOID UnsafeLeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +{ + STATIC_CONTRACT_LEAF; + LeaveCriticalSection(lpCriticalSection); +} + +inline BOOL UnsafeTryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +{ + STATIC_CONTRACT_LEAF; + return TryEnterCriticalSection(lpCriticalSection); +} + +inline VOID UnsafeInitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +{ + STATIC_CONTRACT_LEAF; + InitializeCriticalSection(lpCriticalSection); +} + +inline VOID UnsafeDeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +{ + STATIC_CONTRACT_LEAF; + DeleteCriticalSection(lpCriticalSection); +} + +inline HANDLE UnsafeCreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName) +{ + STATIC_CONTRACT_WRAPPER; + return WszCreateEvent(lpEventAttributes, bManualReset, bInitialState, lpName); +} + +inline BOOL UnsafeSetEvent(HANDLE hEvent) +{ + STATIC_CONTRACT_LEAF; + return SetEvent(hEvent); +} + +inline BOOL UnsafeResetEvent(HANDLE hEvent) +{ + STATIC_CONTRACT_LEAF; + return ResetEvent(hEvent); +} + +inline HANDLE UnsafeCreateSemaphore(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName) +{ + STATIC_CONTRACT_WRAPPER; + return WszCreateSemaphore(lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName); +} + +inline BOOL UnsafeReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount) +{ + STATIC_CONTRACT_LEAF; + return ReleaseSemaphore(hSemaphore, lReleaseCount, lpPreviousCount); +} + +inline LPVOID UnsafeTlsGetValue(DWORD dwTlsIndex) +{ + STATIC_CONTRACT_LEAF; + return TlsGetValue(dwTlsIndex); +} + +inline BOOL UnsafeTlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue) +{ + STATIC_CONTRACT_LEAF; + return TlsSetValue(dwTlsIndex, lpTlsValue); +} + +inline DWORD UnsafeTlsAlloc(void) +{ + STATIC_CONTRACT_LEAF; + return TlsAlloc(); +} + +inline BOOL UnsafeTlsFree(DWORD dwTlsIndex) +{ + STATIC_CONTRACT_LEAF; + return TlsFree(dwTlsIndex); +} + +#endif + + |