1
2
3
4
5
6
7
8
9 package cpu
10
11 import (
12 "syscall"
13 "unsafe"
14 )
15
16 type Errno = syscall.Errno
17
18
19 func darwinSysctlEnabled(name []byte) bool {
20 out := int32(0)
21 nout := unsafe.Sizeof(out)
22 if ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); ret != nil {
23 return false
24 }
25 return out > 0
26 }
27
28
29
30 var libc_sysctlbyname_trampoline_addr uintptr
31
32
33 func sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {
34 if _, _, err := syscall_syscall6(
35 libc_sysctlbyname_trampoline_addr,
36 uintptr(unsafe.Pointer(name)),
37 uintptr(unsafe.Pointer(old)),
38 uintptr(unsafe.Pointer(oldlen)),
39 uintptr(unsafe.Pointer(new)),
40 uintptr(newlen),
41 0,
42 ); err != 0 {
43 return err
44 }
45
46 return nil
47 }
48
49
50
51
52 func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
53
54
55
View as plain text