int main() { unsigned cpu, node; /* Since the getcpu_cache structure isn't exported to userspace, * just allocate a big buffer. */ char buf[1024 * 1024]; __getcpu(&cpu, &node, &buf); //staptest// getcpu (XXXX, XXXX, XXXX) = 0 /* Limit testing. */ __getcpu((unsigned *)-1, &node, &buf); #ifdef __s390__ //staptest// getcpu (0x[7]?[f]+, XXXX, XXXX) = NNNN #else //staptest// getcpu (0x[f]+, XXXX, XXXX) = NNNN #endif __getcpu(&cpu, (unsigned *)-1, &buf); #ifdef __s390__ //staptest// getcpu (XXXX, 0x[7]?[f]+, XXXX) = NNNN #else //staptest// getcpu (XXXX, 0x[f]+, XXXX) = NNNN #endif __getcpu(&cpu, &node, (void *)-1); #ifdef __s390__ //staptest// getcpu (XXXX, XXXX, 0x[7]?[f]+) = NNNN #else //staptest// getcpu (XXXX, XXXX, 0x[f]+) = NNNN #endif return 0; }
int sched_getcpu() { unsigned cpu; int rc = __getcpu(&cpu, nullptr, nullptr); if (rc == -1) { return -1; // errno is already set. } return cpu; }