...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package numcpus
19
20 import (
21 "runtime"
22
23 "golang.org/x/sys/unix"
24 )
25
26 func getConfigured() (int, error) {
27 n, err := unix.SysctlUint32("hw.ncpu")
28 return int(n), err
29 }
30
31 func getKernelMax() (int, error) {
32 if runtime.GOOS == "freebsd" {
33 n, err := unix.SysctlUint32("kern.smp.maxcpus")
34 return int(n), err
35 }
36 return 0, ErrNotSupported
37 }
38
39 func getOffline() (int, error) {
40 return 0, ErrNotSupported
41 }
42
43 func getOnline() (int, error) {
44 var n uint32
45 var err error
46 switch runtime.GOOS {
47 case "netbsd", "openbsd":
48 n, err = unix.SysctlUint32("hw.ncpuonline")
49 if err != nil {
50 n, err = unix.SysctlUint32("hw.ncpu")
51 }
52 default:
53 n, err = unix.SysctlUint32("hw.ncpu")
54 }
55 return int(n), err
56 }
57
58 func getPossible() (int, error) {
59 n, err := unix.SysctlUint32("hw.ncpu")
60 return int(n), err
61 }
62
63 func getPresent() (int, error) {
64 n, err := unix.SysctlUint32("hw.ncpu")
65 return int(n), err
66 }
67
View as plain text