Copyright 2018 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 runtime

import 
The X versions of syscall expect the libc call to return a 64-bit result. Otherwise (the non-X version) expects a 32-bit result. This distinction is required because an error is indicated by returning -1, and we need to know whether to check 32 or 64 bits of the result. (Some libc functions that return 32 bits put junk in the upper 32 bits of AX.)
go:linkname syscall_syscall syscall.syscallgo:nosplitgo:cgo_unsafe_args
func (, , ,  uintptr) (, ,  uintptr) {
	entersyscall()
	libcCall(unsafe.Pointer(funcPC(syscall)), unsafe.Pointer(&))
	exitsyscall()
	return
}
func ()
go:linkname syscall_syscallX syscall.syscallXgo:nosplitgo:cgo_unsafe_args
func (, , ,  uintptr) (, ,  uintptr) {
	entersyscallblock()
	libcCall(unsafe.Pointer(funcPC(syscallX)), unsafe.Pointer(&))
	exitsyscall()
	return
}
func ()
go:linkname syscall_syscall6 syscall.syscall6go:nosplitgo:cgo_unsafe_args
func (, , , , , ,  uintptr) (, ,  uintptr) {
	entersyscall()
	libcCall(unsafe.Pointer(funcPC(syscall6)), unsafe.Pointer(&))
	exitsyscall()
	return
}
func ()
go:linkname syscall_syscall6X syscall.syscall6Xgo:nosplitgo:cgo_unsafe_args
func (, , , , , ,  uintptr) (, ,  uintptr) {
	entersyscall()
	libcCall(unsafe.Pointer(funcPC(syscall6X)), unsafe.Pointer(&))
	exitsyscall()
	return
}
func ()
go:linkname syscall_syscallPtr syscall.syscallPtrgo:nosplitgo:cgo_unsafe_args
func (, , ,  uintptr) (, ,  uintptr) {
	entersyscall()
	libcCall(unsafe.Pointer(funcPC(syscallPtr)), unsafe.Pointer(&))
	exitsyscall()
	return
}
func ()
go:linkname syscall_rawSyscall syscall.rawSyscallgo:nosplitgo:cgo_unsafe_args
func (, , ,  uintptr) (, ,  uintptr) {
	libcCall(unsafe.Pointer(funcPC(syscall)), unsafe.Pointer(&))
	return
}
go:linkname syscall_rawSyscall6 syscall.rawSyscall6go:nosplitgo:cgo_unsafe_args
func (, , , , , ,  uintptr) (, ,  uintptr) {
	libcCall(unsafe.Pointer(funcPC(syscall6)), unsafe.Pointer(&))
	return
}
syscallNoErr is used in crypto/x509 to call into Security.framework and CF.
go:linkname crypto_x509_syscall crypto/x509/internal/macos.syscallgo:nosplitgo:cgo_unsafe_args
func (, , , , , ,  uintptr) ( uintptr) {
	entersyscall()
	libcCall(unsafe.Pointer(funcPC(syscallNoErr)), unsafe.Pointer(&))
	exitsyscall()
	return
}
func ()
The *_trampoline functions convert from the Go calling convention to the C calling convention and then call the underlying libc function. They are defined in sys_darwin_$ARCH.s.
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
mmap is used to do low-level memory allocation via mmap. Don't allow stack splits, since this function (used by sysAlloc) is called in a lot of low-level parts of the runtime and callers often assume it won't acquire any locks. go:nosplit
func ( unsafe.Pointer,  uintptr, , ,  int32,  uint32) (unsafe.Pointer, int) {
	 := struct {
		            unsafe.Pointer
		               uintptr
		, ,  int32
		             uint32
		            unsafe.Pointer
		            int
	}{, , , , , , nil, 0}
	libcCall(unsafe.Pointer(funcPC(mmap_trampoline)), unsafe.Pointer(&))
	return ., .
}
func ()
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
func ( int32,  unsafe.Pointer,  int32) int32 {
	return libcCall(unsafe.Pointer(funcPC(read_trampoline)), unsafe.Pointer(&))
}
func ()

func () (,  int32,  int32) {
	var  [2]int32
	 = libcCall(unsafe.Pointer(funcPC(pipe_trampoline)), noescape(unsafe.Pointer(&)))
	return [0], [1], 
}
func ()
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args This is exported via linkname to assembly in runtime/cgo.go:linkname exit
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
func ( *byte, ,  int32) ( int32) {
	return libcCall(unsafe.Pointer(funcPC(open_trampoline)), unsafe.Pointer(&))
}
func ()
go:nosplitgo:cgo_unsafe_args
func () int64 {
	var  struct {
		            int64  // raw timer
		,  uint32 // conversion factors. nanoseconds = t * numer / denom.
	}
Note: Apple seems unconcerned about overflow here. See https://developer.apple.com/library/content/qa/qa1398/_index.html Note also, numer == denom == 1 is common.
	 := .
	if . != 1 {
		 *= int64(.)
	}
	if . != 1 {
		 /= int64(.)
	}
	return 
}
func ()
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
func ( *stackt,  *stackt) {
Despite the fact that Darwin's sigaltstack man page says it ignores the size when SS_DISABLE is set, it doesn't. sigaltstack returns ENOMEM if we don't give it a reasonable size. ref: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20140421/214296.html
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
func ( *uint32,  uint32,  *byte,  *uintptr,  *byte,  uintptr) int32 {
	return libcCall(unsafe.Pointer(funcPC(sysctl_trampoline)), unsafe.Pointer(&))
}
func ()
go:nosplitgo:cgo_unsafe_args
func ( *byte,  *byte,  *uintptr,  *byte,  uintptr) int32 {
	return libcCall(unsafe.Pointer(funcPC(sysctlbyname_trampoline)), unsafe.Pointer(&))
}
func ()
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
go:nosplitgo:cgo_unsafe_args
Not used on Darwin, but must be defined.
func ( *uint32) {
}
go:nosplit
go:nosplit
func ( int32) {
	 := fcntl(, _F_GETFL, 0)
	fcntl(, _F_SETFL, |_O_NONBLOCK)
}
Tell the linker that the libc_* functions are to be found in a system library, with the libc_ prefix missing.
go:cgo_import_dynamic libc_pthread_attr_init pthread_attr_init "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_attr_getstacksize pthread_attr_getstacksize "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_attr_setdetachstate pthread_attr_setdetachstate "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_create pthread_create "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_self pthread_self "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_kill pthread_kill "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_exit _exit "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_raise raise "/usr/lib/libSystem.B.dylib"
go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_error __error "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_usleep usleep "/usr/lib/libSystem.B.dylib"
go:cgo_import_dynamic libc_mach_timebase_info mach_timebase_info "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_mach_absolute_time mach_absolute_time "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_sigaction sigaction "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_sigmask pthread_sigmask "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_sigaltstack sigaltstack "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_setitimer setitimer "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_sysctlbyname sysctlbyname "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
go:cgo_import_dynamic libc_pthread_mutex_init pthread_mutex_init "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_mutex_lock pthread_mutex_lock "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_mutex_unlock pthread_mutex_unlock "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_cond_init pthread_cond_init "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_cond_wait pthread_cond_wait "/usr/lib/libSystem.B.dylib"go:cgo_import_dynamic libc_pthread_cond_timedwait_relative_np pthread_cond_timedwait_relative_np "/usr/lib/libSystem.B.dylib"