mirror of
https://github.com/Dr-Noob/cpufetch.git
synced 2026-03-25 07:50:40 +01:00
[v1.05] Simplify implementation; we do not need separate x86/ARM nop functions
This commit is contained in:
4
Makefile
4
Makefile
@@ -32,8 +32,8 @@ ifneq ($(OS),Windows_NT)
|
|||||||
CFLAGS += -DARCH_PPC -std=gnu99 -fstack-protector-all -Wno-language-extension-token
|
CFLAGS += -DARCH_PPC -std=gnu99 -fstack-protector-all -Wno-language-extension-token
|
||||||
else ifeq ($(arch), $(filter $(arch), arm aarch64_be aarch64 arm64 armv8b armv8l armv7l armv6l))
|
else ifeq ($(arch), $(filter $(arch), arm aarch64_be aarch64 arm64 armv8b armv8l armv7l armv6l))
|
||||||
SRC_DIR=src/arm/
|
SRC_DIR=src/arm/
|
||||||
SOURCE += $(COMMON_SRC) $(SRC_DIR)midr.c $(SRC_DIR)uarch.c $(SRC_COMMON)soc.c $(SRC_DIR)soc.c $(SRC_DIR)udev.c $(SRC_DIR)freq.c
|
SOURCE += $(COMMON_SRC) $(SRC_DIR)midr.c $(SRC_DIR)uarch.c $(SRC_COMMON)soc.c $(SRC_DIR)soc.c $(SRC_DIR)udev.c
|
||||||
HEADERS += $(COMMON_HDR) $(SRC_DIR)midr.h $(SRC_DIR)uarch.h $(SRC_COMMON)soc.h $(SRC_DIR)soc.h $(SRC_DIR)udev.c $(SRC_DIR)freq.h $(SRC_DIR)socs.h
|
HEADERS += $(COMMON_HDR) $(SRC_DIR)midr.h $(SRC_DIR)uarch.h $(SRC_COMMON)soc.h $(SRC_DIR)soc.h $(SRC_DIR)udev.c $(SRC_DIR)socs.h
|
||||||
CFLAGS += -DARCH_ARM -Wno-unused-parameter -std=c99 -fstack-protector-all
|
CFLAGS += -DARCH_ARM -Wno-unused-parameter -std=c99 -fstack-protector-all
|
||||||
|
|
||||||
os := $(shell uname -s)
|
os := $(shell uname -s)
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#define INSERT_ASM_ONCE __asm volatile("nop");
|
|
||||||
#define INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
|
|
||||||
#define INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES
|
|
||||||
|
|
||||||
#define INSERT_ASM_1000_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
|
|
||||||
void nop_function_arm(uint64_t iters) {
|
|
||||||
for (uint64_t i = 0; i < iters; i++) {
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#ifndef __FREQ__
|
|
||||||
#define __FREQ__
|
|
||||||
|
|
||||||
void nop_function_arm(uint64_t iters);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -29,6 +29,51 @@ perf_event_open(struct perf_event_attr *hw_event, pid_t pid,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define INSERT_ASM_ONCE __asm volatile("nop");
|
||||||
|
#define INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
INSERT_ASM_ONCE \
|
||||||
|
|
||||||
|
#define INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES \
|
||||||
|
INSERT_ASM_10_TIMES
|
||||||
|
|
||||||
|
#define INSERT_ASM_1000_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
INSERT_ASM_100_TIMES \
|
||||||
|
|
||||||
|
void nop_function(uint64_t iters) {
|
||||||
|
for (uint64_t i = 0; i < iters; i++) {
|
||||||
|
INSERT_ASM_1000_TIMES
|
||||||
|
INSERT_ASM_1000_TIMES
|
||||||
|
INSERT_ASM_1000_TIMES
|
||||||
|
INSERT_ASM_1000_TIMES
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Differences between x86 measure_frequency this measure_max_frequency:
|
// Differences between x86 measure_frequency this measure_max_frequency:
|
||||||
// - measure_frequency employs all cores simultaneously wherease
|
// - measure_frequency employs all cores simultaneously wherease
|
||||||
@@ -52,15 +97,6 @@ int64_t measure_max_frequency(uint32_t core) {
|
|||||||
int fd;
|
int fd;
|
||||||
int pid = 0;
|
int pid = 0;
|
||||||
|
|
||||||
void (*nop_function)(uint64_t);
|
|
||||||
|
|
||||||
#ifdef ARCH_X86
|
|
||||||
nop_function = nop_function_x86;
|
|
||||||
#elif ARCH_ARM
|
|
||||||
// TODO
|
|
||||||
nop_function = nop_function_arm;
|
|
||||||
#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;
|
||||||
pe.size = sizeof(struct perf_event_attr);
|
pe.size = sizeof(struct perf_event_attr);
|
||||||
|
|||||||
@@ -143,50 +143,4 @@ int64_t measure_frequency(struct cpuInfo* cpu) {
|
|||||||
|
|
||||||
printf("\r%*c", num_spaces, ' ');
|
printf("\r%*c", num_spaces, ' ');
|
||||||
return freq_struct->freq;
|
return freq_struct->freq;
|
||||||
}
|
|
||||||
|
|
||||||
#define INSERT_ASM_ONCE __asm volatile("nop");
|
|
||||||
#define INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
INSERT_ASM_ONCE \
|
|
||||||
|
|
||||||
#define INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES \
|
|
||||||
INSERT_ASM_10_TIMES
|
|
||||||
|
|
||||||
#define INSERT_ASM_1000_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
INSERT_ASM_100_TIMES \
|
|
||||||
|
|
||||||
void nop_function_x86(uint64_t iters) {
|
|
||||||
for (uint64_t i = 0; i < iters; i++) {
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
INSERT_ASM_1000_TIMES
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user