diff options
author | Adin Scannell <ascannell@google.com> | 2019-11-21 11:29:49 -0800 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-11-21 11:41:30 -0800 |
commit | c0f89eba6ebdec08460bd796fc62d6aef674d141 (patch) | |
tree | 38b35320dc70d55e0b83d221d5c45a404f8a6683 /pkg/syncutil/memmove_unsafe.go | |
parent | b6a00aa375e674617f1914b90db5ddb222b5a04e (diff) |
Import and structure cleanup.
PiperOrigin-RevId: 281795269
Diffstat (limited to 'pkg/syncutil/memmove_unsafe.go')
-rw-r--r-- | pkg/syncutil/memmove_unsafe.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/pkg/syncutil/memmove_unsafe.go b/pkg/syncutil/memmove_unsafe.go new file mode 100644 index 000000000..348675baa --- /dev/null +++ b/pkg/syncutil/memmove_unsafe.go @@ -0,0 +1,28 @@ +// Copyright 2019 The gVisor Authors. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.12 +// +build !go1.15 + +// Check go:linkname function signatures when updating Go version. + +package syncutil + +import ( + "unsafe" +) + +//go:linkname memmove runtime.memmove +//go:noescape +func memmove(to, from unsafe.Pointer, n uintptr) + +// Memmove is exported for SeqAtomicLoad/SeqAtomicTryLoad<T>, which can't +// define it because go_generics can't update the go:linkname annotation. +// Furthermore, go:linkname silently doesn't work if the local name is exported +// (this is of course undocumented), which is why this indirection is +// necessary. +func Memmove(to, from unsafe.Pointer, n uintptr) { + memmove(to, from, n) +} |