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