Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions runtime/internal/lib/runtime/os_darwin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package runtime

import "unsafe"

func sysctlbynameInt32(name []byte) (int32, int32) {
out := int32(0)
nout := unsafe.Sizeof(out)
ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0)
return ret, out
}

//go:linkname internal_cpu_getsysctlbyname internal/cpu.getsysctlbyname
func internal_cpu_getsysctlbyname(name []byte) (int32, int32) {
return sysctlbynameInt32(name)
}

var libc_sysctlbyname_trampoline_addr uintptr

// adapted from runtime/sys_darwin.go in the pattern of sysctl() above, as defined in x/sys/unix
func sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) int32 {
r, _, _ := llgo_rawSyscall6(
libc_sysctlbyname_trampoline_addr,
uintptr(unsafe.Pointer(name)),
uintptr(unsafe.Pointer(old)),
uintptr(unsafe.Pointer(oldlen)),
uintptr(unsafe.Pointer(new)),
uintptr(newlen),
0,
)
return int32(r)
}
14 changes: 14 additions & 0 deletions runtime/internal/lib/runtime/synctest_llgo.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,17 @@ func synctest_disassociate(_ unsafe.Pointer) {}
func synctest_isAssociated(_ unsafe.Pointer) bool {
return false
}

//go:linkname synctest_acquire internal/synctest.acquire
func synctest_acquire() any {
return nil
}

//go:linkname synctest_release internal/synctest.release
func synctest_release(bubble any) {
}

//go:linkname synctest_inBubble internal/synctest.inBubble
func synctest_inBubble(bubble any, f func()) {
f()
}
Loading