Mercurial > hg > CbC > CbC_gcc
view libgo/runtime/getncpu-linux.c @ 138:fc828634a951
merge
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 08 Nov 2018 14:17:14 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. #include <features.h> #include <sched.h> // CPU_COUNT is only provided by glibc 2.6 or higher #ifndef CPU_COUNT #define CPU_COUNT(set) _CPU_COUNT((unsigned int *)(set), sizeof(*(set))/sizeof(unsigned int)) static int _CPU_COUNT(unsigned int *set, size_t len) { int cnt; cnt = 0; while (len--) cnt += __builtin_popcount(*set++); return cnt; } #endif #include "runtime.h" #include "defs.h" int32 getproccount(void) { cpu_set_t set; int32 r, cnt; cnt = 0; r = sched_getaffinity(0, sizeof(set), &set); if(r == 0) cnt += CPU_COUNT(&set); return cnt ? cnt : 1; }