I am trying to understand how many cpu or/and cored are available for running application.
I check code related to sysctl in libports/src/lib/libc/sysctl.cchttp://sysctl.cc and found extern "C" int __sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp, const void *newp, size_t newlen) { … /* fallback values */ { switch(index_a) {
… case CTL_HW: switch(index_b) {
case HW_MACHINE: *oldlenp = 0; return 0;
case HW_NCPU: *(int*)oldp = 1; *oldlenp = sizeof(int); return 0;
} break;
… in short, if I used standardised for BSD code (like below in golang) it always return 1!
int32 getproccount(void) { int mib[2], out; size_t len;
mib[0] = CTL_HW; mib[1] = HW_NCPU; len = sizeof(out); if(sysctl(mib, 2, &out, &len, NULL, 0) >= 0) return (int32)out; else return 0; }
Any suggestions? How I can have portable code for Genode to obtain at least NCPU?
Sincerely, Alexander