shithub: mc

ref: 34f2230c4a505f3b94bc33ed07f0839fe66a0e93
dir: /lib/thread/ncpu+linux.myr/

View raw version
use std
use sys

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

const ncpu = {
	var cpubuf : uint64[4]
	var n

	sys.sched_getaffinity(sys.getpid(), sizeof(uint64[4]), (&cpubuf : uint64#))
	n = 0
	for b : cpubuf[:]
		if b != 0
			n += count(b)
		;;
	;;
	-> n
}

const count = {b
	var n = 0
	for var i = 0; i < 8*sizeof(uint64); i++
		if b & (1<<i) != 0
			n++
		;;
	;;
	-> n
}