1// Copyright 2022 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
5// This file lives in the runtime package
6// so we can get access to the runtime guts.
7// The rest of the implementation of this test is in align_test.go.
8
9package runtime
10
11import "unsafe"
12
13// AtomicFields is the set of fields on which we perform 64-bit atomic
14// operations (all the *64 operations in internal/runtime/atomic).
15var AtomicFields = []uintptr{
16	unsafe.Offsetof(m{}.procid),
17	unsafe.Offsetof(p{}.gcFractionalMarkTime),
18	unsafe.Offsetof(profBuf{}.overflow),
19	unsafe.Offsetof(profBuf{}.overflowTime),
20	unsafe.Offsetof(heapStatsDelta{}.tinyAllocCount),
21	unsafe.Offsetof(heapStatsDelta{}.smallAllocCount),
22	unsafe.Offsetof(heapStatsDelta{}.smallFreeCount),
23	unsafe.Offsetof(heapStatsDelta{}.largeAlloc),
24	unsafe.Offsetof(heapStatsDelta{}.largeAllocCount),
25	unsafe.Offsetof(heapStatsDelta{}.largeFree),
26	unsafe.Offsetof(heapStatsDelta{}.largeFreeCount),
27	unsafe.Offsetof(heapStatsDelta{}.committed),
28	unsafe.Offsetof(heapStatsDelta{}.released),
29	unsafe.Offsetof(heapStatsDelta{}.inHeap),
30	unsafe.Offsetof(heapStatsDelta{}.inStacks),
31	unsafe.Offsetof(heapStatsDelta{}.inPtrScalarBits),
32	unsafe.Offsetof(heapStatsDelta{}.inWorkBufs),
33	unsafe.Offsetof(lfnode{}.next),
34	unsafe.Offsetof(mstats{}.last_gc_nanotime),
35	unsafe.Offsetof(mstats{}.last_gc_unix),
36	unsafe.Offsetof(workType{}.bytesMarked),
37}
38
39// AtomicVariables is the set of global variables on which we perform
40// 64-bit atomic operations.
41var AtomicVariables = []unsafe.Pointer{
42	unsafe.Pointer(&ncgocall),
43	unsafe.Pointer(&test_z64),
44	unsafe.Pointer(&blockprofilerate),
45	unsafe.Pointer(&mutexprofilerate),
46	unsafe.Pointer(&gcController),
47	unsafe.Pointer(&memstats),
48	unsafe.Pointer(&sched),
49	unsafe.Pointer(&ticks),
50	unsafe.Pointer(&work),
51}
52