34 lines
1.3 KiB
Go
34 lines
1.3 KiB
Go
// Copyright 2009 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.
|
|
|
|
package syscall
|
|
|
|
// AllThreadsSyscall performs a syscall on each OS thread of the Go
|
|
// runtime. It first invokes the syscall on one thread. Should that
|
|
// invocation fail, it returns immediately with the error status.
|
|
// Otherwise, it invokes the syscall on all of the remaining threads
|
|
// in parallel. It will terminate the program if it observes any
|
|
// invoked syscall's return value differs from that of the first
|
|
// invocation.
|
|
//
|
|
// AllThreadsSyscall is intended for emulating simultaneous
|
|
// process-wide state changes that require consistently modifying
|
|
// per-thread state of the Go runtime.
|
|
//
|
|
// AllThreadsSyscall is unaware of any threads that are launched
|
|
// explicitly by cgo linked code, so the function always returns
|
|
// ENOTSUP in binaries that use cgo.
|
|
//go:uintptrescapes
|
|
func AllThreadsSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
|
|
return minus1, minus1, ENOTSUP
|
|
}
|
|
|
|
// AllThreadsSyscall6 is like AllThreadsSyscall, but extended to six
|
|
// arguments.
|
|
//go:uintptrescapes
|
|
func AllThreadsSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
|
|
return minus1, minus1, ENOTSUP
|
|
}
|
|
|
|
const minus1 = ^uintptr(0)
|