// 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 runtime/internal/atomic).
var AtomicFields = []uintptr{
	unsafe.Offsetof(m{}.procid),
	unsafe.Offsetof(p{}.timer0When),
	unsafe.Offsetof(p{}.timerModifiedEarliest),
	unsafe.Offsetof(p{}.gcFractionalMarkTime),
	unsafe.Offsetof(schedt{}.goidgen),
	unsafe.Offsetof(schedt{}.lastpoll),
	unsafe.Offsetof(schedt{}.pollUntil),
	unsafe.Offsetof(schedt{}.timeToRun),
	unsafe.Offsetof(gcControllerState{}.bgScanCredit),
	unsafe.Offsetof(gcControllerState{}.maxStackScan),
	unsafe.Offsetof(gcControllerState{}.heapLive),
	unsafe.Offsetof(gcControllerState{}.heapScan),
	unsafe.Offsetof(gcControllerState{}.dedicatedMarkTime),
	unsafe.Offsetof(gcControllerState{}.dedicatedMarkWorkersNeeded),
	unsafe.Offsetof(gcControllerState{}.fractionalMarkTime),
	unsafe.Offsetof(gcControllerState{}.idleMarkTime),
	unsafe.Offsetof(gcControllerState{}.globalsScan),
	unsafe.Offsetof(gcControllerState{}.lastStackScan),
	unsafe.Offsetof(timeHistogram{}.underflow),
	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(mstats{}.gcPauseDist),
	unsafe.Offsetof(ticksType{}.val),
	unsafe.Offsetof(workType{}.bytesMarked),
	unsafe.Offsetof(timeHistogram{}.counts),
}

// 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),
}
