[v1.05] Improve error reporting due to perf_event_paranoid issues

This commit is contained in:
Dr-Noob
2024-02-16 23:54:08 +01:00
parent 670af7b61c
commit 35483cc493

View File

@@ -45,10 +45,6 @@ int64_t measure_max_frequency(uint32_t core) {
return -1; return -1;
} }
const char* frequency_banner = "cpufetch is measuring the max frequency...";
printf("%s", frequency_banner);
fflush(stdout);
clockid_t clock = CLOCK_PROCESS_CPUTIME_ID; clockid_t clock = CLOCK_PROCESS_CPUTIME_ID;
struct perf_event_attr pe; struct perf_event_attr pe;
@@ -63,7 +59,7 @@ int64_t measure_max_frequency(uint32_t core) {
#elif ARCH_ARM #elif ARCH_ARM
// TODO // TODO
nop_function = nop_function_arm; nop_function = nop_function_arm;
#endif #endif
memset(&pe, 0, sizeof(struct perf_event_attr)); memset(&pe, 0, sizeof(struct perf_event_attr));
pe.type = PERF_TYPE_HARDWARE; pe.type = PERF_TYPE_HARDWARE;
@@ -76,9 +72,17 @@ int64_t measure_max_frequency(uint32_t core) {
fd = perf_event_open(&pe, pid, core, -1, 0); fd = perf_event_open(&pe, pid, core, -1, 0);
if (fd == -1) { if (fd == -1) {
perror("perf_event_open"); perror("perf_event_open");
if (errno == EPERM || errno == EACCES) {
printf("You may not have permission to collect stats.\n");
printf("Consider tweaking /proc/sys/kernel/perf_event_paranoid or running as root.\n");
}
return -1; return -1;
} }
const char* frequency_banner = "cpufetch is measuring the max frequency...";
printf("%s", frequency_banner);
fflush(stdout);
uint64_t iters = 10000000; uint64_t iters = 10000000;
struct timespec start, end; struct timespec start, end;
if (clock_gettime(clock, &start) == -1) { if (clock_gettime(clock, &start) == -1) {