// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // This file lives in the runtime package // so we can get access to the runtime guts. // The rest of the implementation of this test is in align_test.go. package runtime import "unsafe" // AtomicFields is the set of fields on which we perform 64-bit atomic // operations (all the *64 operations in internal/runtime/atomic). var AtomicFields = []uintptr{ unsafe.Offsetof(m{}.procid), unsafe.Offsetof(p{}.gcFractionalMarkTime), unsafe.Offsetof(profBuf{}.overflow), unsafe.Offsetof(profBuf{}.overflowTime), unsafe.Offsetof(heapStatsDelta{}.tinyAllocCount), unsafe.Offsetof(heapStatsDelta{}.smallAllocCount), unsafe.Offsetof(heapStatsDelta{}.smallFreeCount), unsafe.Offsetof(heapStatsDelta{}.largeAlloc), unsafe.Offsetof(heapStatsDelta{}.largeAllocCount), unsafe.Offsetof(heapStatsDelta{}.largeFree), unsafe.Offsetof(heapStatsDelta{}.largeFreeCount), unsafe.Offsetof(heapStatsDelta{}.committed), unsafe.Offsetof(heapStatsDelta{}.released), unsafe.Offsetof(heapStatsDelta{}.inHeap), unsafe.Offsetof(heapStatsDelta{}.inStacks), unsafe.Offsetof(heapStatsDelta{}.inPtrScalarBits), unsafe.Offsetof(heapStatsDelta{}.inWorkBufs), unsafe.Offsetof(lfnode{}.next), unsafe.Offsetof(mstats{}.last_gc_nanotime), unsafe.Offsetof(mstats{}.last_gc_unix), unsafe.Offsetof(workType{}.bytesMarked), } // AtomicVariables is the set of global variables on which we perform // 64-bit atomic operations. var AtomicVariables = []unsafe.Pointer{ unsafe.Pointer(&ncgocall), unsafe.Pointer(&test_z64), unsafe.Pointer(&blockprofilerate), unsafe.Pointer(&mutexprofilerate), unsafe.Pointer(&gcController), unsafe.Pointer(&memstats), unsafe.Pointer(&sched), unsafe.Pointer(&ticks), unsafe.Pointer(&work), }