summaryrefslogtreecommitdiff
path: root/lib/thread/ncpu+freebsd.myr
blob: 1aa3dc18f4e1e956086c9436b984080d1248c907 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use std
use sys

pkg thread =
	const ncpu	: (-> int)
;;

const ncpu = {
	var mib	: int[2]
	var ncpu : int
	var ncpusz
	var res

	mib[0] = 6 /* CTL_HW */
	mib[1] = 3 /* HW_NCPU */
	ncpusz = sizeof(int)

	res = sys.sysctl(mib[:], (&ncpu : void#), &ncpusz, (0 : void#), (0 : sys.size#))
	if res < 0 || ncpu <= 0
		-> 1
	;;
	-> ncpu
}