mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-08 12:56:48 +00:00
30 lines
824 B
C
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()
|