2025-05-29 10:33:02 +08:00

30 lines
824 B
C

// SPDX-License-Identifier: MPL-2.0
#include "../network/test.h"
#include <sys/syscall.h>
#include <unistd.h>
FN_TEST(getcpu)
{
struct int_pair {
unsigned int first;
unsigned int second;
};
struct int_pair cpu = { .first = 0xdeadbeef, .second = 0xbeefdead };
struct int_pair node = { .first = 0xbeefdead, .second = 0xdeadbeef };
// Use `syscall()` here because `getcpu()` from glibc may not use
// the system call to retrieve CPU information.
TEST_SUCC(syscall(SYS_getcpu, NULL, NULL));
// Our CI has a maximum of 4 CPUs, and NUMA support is not yet
// available. Update these conditions if we have more than 4 CPUs
// or if NUMA support is added.
TEST_RES(syscall(SYS_getcpu, &cpu, &node),
cpu.first < 4 && cpu.second == 0xbeefdead && node.first == 0 &&
node.second == 0xdeadbeef);
}
END_TEST()