mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-14 10:47:35 +07:00
selftests/powerpc: Move pick_online_cpu() up into utils.c
We want to use this in another test, so make it available at the top of the powerpc selftests tree. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
00b912b0c8
commit
d1301afd71
@ -2,7 +2,7 @@ noarg:
|
|||||||
$(MAKE) -C ../
|
$(MAKE) -C ../
|
||||||
|
|
||||||
TEST_PROGS := count_instructions l3_bank_test per_event_excludes
|
TEST_PROGS := count_instructions l3_bank_test per_event_excludes
|
||||||
EXTRA_SOURCES := ../harness.c event.c lib.c
|
EXTRA_SOURCES := ../harness.c event.c lib.c ../utils.c
|
||||||
|
|
||||||
all: $(TEST_PROGS) ebb
|
all: $(TEST_PROGS) ebb
|
||||||
|
|
||||||
|
@ -15,32 +15,6 @@
|
|||||||
#include "lib.h"
|
#include "lib.h"
|
||||||
|
|
||||||
|
|
||||||
int pick_online_cpu(void)
|
|
||||||
{
|
|
||||||
cpu_set_t mask;
|
|
||||||
int cpu;
|
|
||||||
|
|
||||||
CPU_ZERO(&mask);
|
|
||||||
|
|
||||||
if (sched_getaffinity(0, sizeof(mask), &mask)) {
|
|
||||||
perror("sched_getaffinity");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We prefer a primary thread, but skip 0 */
|
|
||||||
for (cpu = 8; cpu < CPU_SETSIZE; cpu += 8)
|
|
||||||
if (CPU_ISSET(cpu, &mask))
|
|
||||||
return cpu;
|
|
||||||
|
|
||||||
/* Search for anything, but in reverse */
|
|
||||||
for (cpu = CPU_SETSIZE - 1; cpu >= 0; cpu--)
|
|
||||||
if (CPU_ISSET(cpu, &mask))
|
|
||||||
return cpu;
|
|
||||||
|
|
||||||
printf("No cpus in affinity mask?!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int bind_to_cpu(int cpu)
|
int bind_to_cpu(int cpu)
|
||||||
{
|
{
|
||||||
cpu_set_t mask;
|
cpu_set_t mask;
|
||||||
|
@ -19,7 +19,6 @@ union pipe {
|
|||||||
int fds[2];
|
int fds[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int pick_online_cpu(void);
|
|
||||||
extern int bind_to_cpu(int cpu);
|
extern int bind_to_cpu(int cpu);
|
||||||
extern int kill_child_and_wait(pid_t child_pid);
|
extern int kill_child_and_wait(pid_t child_pid);
|
||||||
extern int wait_for_child(pid_t child_pid);
|
extern int wait_for_child(pid_t child_pid);
|
||||||
|
@ -3,10 +3,13 @@
|
|||||||
* Licensed under GPLv2.
|
* Licensed under GPLv2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE /* For CPU_ZERO etc. */
|
||||||
|
|
||||||
#include <elf.h>
|
#include <elf.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <link.h>
|
#include <link.h>
|
||||||
|
#include <sched.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@ -56,3 +59,29 @@ void *get_auxv_entry(int type)
|
|||||||
close(fd);
|
close(fd);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int pick_online_cpu(void)
|
||||||
|
{
|
||||||
|
cpu_set_t mask;
|
||||||
|
int cpu;
|
||||||
|
|
||||||
|
CPU_ZERO(&mask);
|
||||||
|
|
||||||
|
if (sched_getaffinity(0, sizeof(mask), &mask)) {
|
||||||
|
perror("sched_getaffinity");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We prefer a primary thread, but skip 0 */
|
||||||
|
for (cpu = 8; cpu < CPU_SETSIZE; cpu += 8)
|
||||||
|
if (CPU_ISSET(cpu, &mask))
|
||||||
|
return cpu;
|
||||||
|
|
||||||
|
/* Search for anything, but in reverse */
|
||||||
|
for (cpu = CPU_SETSIZE - 1; cpu >= 0; cpu--)
|
||||||
|
if (CPU_ISSET(cpu, &mask))
|
||||||
|
return cpu;
|
||||||
|
|
||||||
|
printf("No cpus in affinity mask?!\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@ -22,6 +22,7 @@ typedef uint8_t u8;
|
|||||||
|
|
||||||
int test_harness(int (test_function)(void), char *name);
|
int test_harness(int (test_function)(void), char *name);
|
||||||
extern void *get_auxv_entry(int type);
|
extern void *get_auxv_entry(int type);
|
||||||
|
int pick_online_cpu(void);
|
||||||
|
|
||||||
static inline bool have_hwcap2(unsigned long ftr2)
|
static inline bool have_hwcap2(unsigned long ftr2)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user