// Copyright 2015 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.

//go:build race

package race

import (
	"internal/abi"
	"unsafe"
)

const Enabled = true

// Functions below pushed from runtime.

//go:linkname Acquire
func Acquire(addr unsafe.Pointer)

//go:linkname Release
func Release(addr unsafe.Pointer)

//go:linkname ReleaseMerge
func ReleaseMerge(addr unsafe.Pointer)

//go:linkname Disable
func Disable()

//go:linkname Enable
func Enable()

//go:linkname Read
func Read(addr unsafe.Pointer)

//go:linkname ReadPC
func ReadPC(addr unsafe.Pointer, callerpc, pc uintptr)

//go:linkname ReadObjectPC
func ReadObjectPC(t *abi.Type, addr unsafe.Pointer, callerpc, pc uintptr)

//go:linkname Write
func Write(addr unsafe.Pointer)

//go:linkname WritePC
func WritePC(addr unsafe.Pointer, callerpc, pc uintptr)

//go:linkname WriteObjectPC
func WriteObjectPC(t *abi.Type, addr unsafe.Pointer, callerpc, pc uintptr)

//go:linkname ReadRange
func ReadRange(addr unsafe.Pointer, len int)

//go:linkname WriteRange
func WriteRange(addr unsafe.Pointer, len int)

//go:linkname Errors
func Errors() int