1// Copyright 2015 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package atomic
6
7import "unsafe"
8
9//go:noescape
10func Xadd(ptr *uint32, delta int32) uint32
11
12//go:noescape
13func Xadd64(ptr *uint64, delta int64) uint64
14
15//go:noescape
16func Xadduintptr(ptr *uintptr, delta uintptr) uintptr
17
18//go:noescape
19func Xchg(ptr *uint32, new uint32) uint32
20
21//go:noescape
22func Xchg64(ptr *uint64, new uint64) uint64
23
24//go:noescape
25func Xchguintptr(ptr *uintptr, new uintptr) uintptr
26
27//go:noescape
28func Load(ptr *uint32) uint32
29
30//go:noescape
31func Load8(ptr *uint8) uint8
32
33//go:noescape
34func Load64(ptr *uint64) uint64
35
36// NO go:noescape annotation; *ptr escapes if result escapes (#31525)
37func Loadp(ptr unsafe.Pointer) unsafe.Pointer
38
39//go:noescape
40func LoadAcq(ptr *uint32) uint32
41
42//go:noescape
43func LoadAcq64(ptr *uint64) uint64
44
45//go:noescape
46func LoadAcquintptr(ptr *uintptr) uintptr
47
48//go:noescape
49func Or8(ptr *uint8, val uint8)
50
51//go:noescape
52func And8(ptr *uint8, val uint8)
53
54//go:noescape
55func And(ptr *uint32, val uint32)
56
57//go:noescape
58func Or(ptr *uint32, val uint32)
59
60//go:noescape
61func And32(ptr *uint32, val uint32) uint32
62
63//go:noescape
64func Or32(ptr *uint32, val uint32) uint32
65
66//go:noescape
67func And64(ptr *uint64, val uint64) uint64
68
69//go:noescape
70func Or64(ptr *uint64, val uint64) uint64
71
72//go:noescape
73func Anduintptr(ptr *uintptr, val uintptr) uintptr
74
75//go:noescape
76func Oruintptr(ptr *uintptr, val uintptr) uintptr
77
78//go:noescape
79func Cas64(ptr *uint64, old, new uint64) bool
80
81//go:noescape
82func CasRel(ptr *uint32, old, new uint32) bool
83
84//go:noescape
85func Store(ptr *uint32, val uint32)
86
87//go:noescape
88func Store8(ptr *uint8, val uint8)
89
90//go:noescape
91func Store64(ptr *uint64, val uint64)
92
93// NO go:noescape annotation; see atomic_pointer.go.
94func StorepNoWB(ptr unsafe.Pointer, val unsafe.Pointer)
95
96//go:noescape
97func StoreRel(ptr *uint32, val uint32)
98
99//go:noescape
100func StoreRel64(ptr *uint64, val uint64)
101
102//go:noescape
103func StoreReluintptr(ptr *uintptr, val uintptr)
104