acme
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages Concepts
aaa_want_to_remove_001.h
1#pragma once
2
3
4
5
6
7#if defined(SOLARIS)
8#include <atomic.h>
9#if defined(OS64BIT)
10#define _gen_InterlockedIncrement(ptr) atomic_inc_64(ptr)
11#define _gen_InterlockedDecrement(ptr) atomic_dec_64(ptr)
12#else
13#define _gen_InterlockedIncrement(ptr) atomic_inc_32((volatile unsigned int *) ptr)
14#define _gen_InterlockedDecrement(ptr) atomic_dec_32((volatile unsigned int *) ptr)
15#endif
16#elif defined(LINUX) || defined(__APPLE__) || defined(ANDROID)
17#if (defined(RASPBERRYPIOS)) && defined(OS32BIT)
18#define _gen_InterlockedIncrement(ptr) __sync_add_and_fetch_4(ptr, 1)
19#define _gen_InterlockedDecrement(ptr) __sync_sub_and_fetch_4(ptr, 1)
20#else
21#define _gen_InterlockedIncrement(ptr) __sync_add_and_fetch(ptr, 1)
22#define _gen_InterlockedDecrement(ptr) __sync_sub_and_fetch(ptr, 1)
23#endif
24#else
25#ifdef _M_IX86
26#ifndef _M_CEE
27#define _gen_InterlockedIncrement InterlockedIncrement
28#define _gen_InterlockedDecrement InterlockedDecrement
29#else
30#define _gen_InterlockedIncrement InterlockedIncrement
31#define _gen_InterlockedDecrement InterlockedDecrement
32/* managed code must use the non-intrinsics */
33#ifdef InterlockedIncrement
34#undef InterlockedIncrement
35#endif
36#ifdef InterlockedDecrement
37#undef InterlockedDecrement
38#endif
39#endif // !_M_CEE
40#else
41#define _gen_InterlockedIncrement InterlockedIncrement
42#define _gen_InterlockedDecrement InterlockedDecrement
43#endif // _M_IX86_
44#endif // ! LINUX
45
46