1 /* 2 * Copyright 2014, Michael Ellerman, IBM Corp. 3 * Licensed under GPLv2. 4 */ 5 6 #ifndef __SELFTESTS_POWERPC_PMU_LIB_H 7 #define __SELFTESTS_POWERPC_PMU_LIB_H 8 9 #include <stdio.h> 10 #include <stdint.h> 11 #include <string.h> 12 #include <unistd.h> 13 14 union pipe { 15 struct { 16 int read_fd; 17 int write_fd; 18 }; 19 int fds[2]; 20 }; 21 22 extern int pick_online_cpu(void); 23 extern int bind_to_cpu(int cpu); 24 extern int kill_child_and_wait(pid_t child_pid); 25 extern int wait_for_child(pid_t child_pid); 26 extern int sync_with_child(union pipe read_pipe, union pipe write_pipe); 27 extern int wait_for_parent(union pipe read_pipe); 28 extern int notify_parent(union pipe write_pipe); 29 extern int notify_parent_of_error(union pipe write_pipe); 30 extern pid_t eat_cpu(int (test_function)(void)); 31 extern bool require_paranoia_below(int level); 32 33 struct addr_range { 34 uint64_t first, last; 35 }; 36 37 extern struct addr_range libc, vdso; 38 39 int parse_proc_maps(void); 40 41 #endif /* __SELFTESTS_POWERPC_PMU_LIB_H */ 42