sanitizer_atomic.h revision 2d1fdb26e458c4ddc04155c1d421bced3ba90cd0
15fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI//===-- sanitizer_atomic.h --------------------------------------*- C++ -*-===//
25fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI//
35fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI//                     The LLVM Compiler Infrastructure
45fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI//
55fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI// This file is distributed under the University of Illinois Open Source
65fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI// License. See LICENSE.TXT for details.
75fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI//
85fd6ec87600ac3bd96c2500f6f4a1a9010d8d31eYasuyuki KOZAKAI//===----------------------------------------------------------------------===//
9//
10// This file is a part of ThreadSanitizer/AddressSanitizer runtime.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef SANITIZER_ATOMIC_H
15#define SANITIZER_ATOMIC_H
16
17#include "sanitizer_internal_defs.h"
18
19namespace __sanitizer {
20
21enum memory_order {
22  memory_order_relaxed = 1 << 0,
23  memory_order_consume = 1 << 1,
24  memory_order_acquire = 1 << 2,
25  memory_order_release = 1 << 3,
26  memory_order_acq_rel = 1 << 4,
27  memory_order_seq_cst = 1 << 5
28};
29
30struct atomic_uint8_t {
31  typedef u8 Type;
32  volatile Type val_dont_use;
33};
34
35struct atomic_uint16_t {
36  typedef u16 Type;
37  volatile Type val_dont_use;
38};
39
40struct atomic_uint32_t {
41  typedef u32 Type;
42  volatile Type val_dont_use;
43};
44
45struct atomic_uint64_t {
46  typedef u64 Type;
47  // On 32-bit platforms u64 is not necessary aligned on 8 bytes.
48  volatile ALIGNED(8) Type val_dont_use;
49};
50
51struct atomic_uintptr_t {
52  typedef uptr Type;
53  volatile Type val_dont_use;
54};
55
56}  // namespace __sanitizer
57
58#if defined(__GNUC__)
59# include "sanitizer_atomic_clang.h"
60#elif defined(_MSC_VER)
61# include "sanitizer_atomic_msvc.h"
62#else
63# error "Unsupported compiler"
64#endif
65
66#endif  // SANITIZER_ATOMIC_H
67