mirror of
https://github.com/Dr-Noob/cpufetch.git
synced 2026-03-25 07:50:40 +01:00
[v1.05] Print a tilde in case the freq was measured (indicating that this value is an approximation)
This commit is contained in:
@@ -40,12 +40,14 @@ struct cache* get_cache_info(struct cpuInfo* cpu) {
|
|||||||
struct frequency* get_frequency_info(uint32_t core) {
|
struct frequency* get_frequency_info(uint32_t core) {
|
||||||
struct frequency* freq = emalloc(sizeof(struct frequency));
|
struct frequency* freq = emalloc(sizeof(struct frequency));
|
||||||
|
|
||||||
|
freq->measured = false;
|
||||||
freq->base = UNKNOWN_DATA;
|
freq->base = UNKNOWN_DATA;
|
||||||
freq->max = get_max_freq_from_file(core);
|
freq->max = get_max_freq_from_file(core);
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
if (freq->max == UNKNOWN_DATA) {
|
if (freq->max == UNKNOWN_DATA) {
|
||||||
printWarn("Unable to find max frequency from udev, measuring CPU frequency");
|
printWarn("Unable to find max frequency from udev, measuring CPU frequency");
|
||||||
freq->max = measure_max_frequency(core);
|
freq->max = measure_max_frequency(core);
|
||||||
|
freq->measured = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -145,17 +145,25 @@ char* get_str_l3(struct cache* cach) {
|
|||||||
|
|
||||||
char* get_str_freq(struct frequency* freq) {
|
char* get_str_freq(struct frequency* freq) {
|
||||||
//Max 3 digits and 3 for '(M/G)Hz' plus 1 for '\0'
|
//Max 3 digits and 3 for '(M/G)Hz' plus 1 for '\0'
|
||||||
uint32_t size = (5+1+3+1);
|
uint32_t size = (1+5+1+3+1);
|
||||||
assert(strlen(STRING_UNKNOWN)+1 <= size);
|
assert(strlen(STRING_UNKNOWN)+1 <= size);
|
||||||
char* string = emalloc(sizeof(char)*size);
|
char* string = ecalloc(size, sizeof(char));
|
||||||
memset(string, 0, sizeof(char)*size);
|
|
||||||
|
|
||||||
if(freq->max == UNKNOWN_DATA || freq->max < 0)
|
if(freq->max == UNKNOWN_DATA || freq->max < 0) {
|
||||||
snprintf(string,strlen(STRING_UNKNOWN)+1,STRING_UNKNOWN);
|
snprintf(string,strlen(STRING_UNKNOWN)+1,STRING_UNKNOWN);
|
||||||
else if(freq->max >= 1000)
|
}
|
||||||
snprintf(string,size,"%.3f "STRING_GIGAHERZ,(float)(freq->max)/1000);
|
else if(freq->max >= 1000) {
|
||||||
else
|
if (freq->measured)
|
||||||
snprintf(string,size,"%d "STRING_MEGAHERZ,freq->max);
|
snprintf(string,size,"~%.3f "STRING_GIGAHERZ,(float)(freq->max)/1000);
|
||||||
|
else
|
||||||
|
snprintf(string,size,"%.3f "STRING_GIGAHERZ,(float)(freq->max)/1000);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (freq->measured)
|
||||||
|
snprintf(string,size,"~%d "STRING_MEGAHERZ,freq->max);
|
||||||
|
else
|
||||||
|
snprintf(string,size,"%d "STRING_MEGAHERZ,freq->max);
|
||||||
|
}
|
||||||
|
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ typedef int32_t VENDOR;
|
|||||||
struct frequency {
|
struct frequency {
|
||||||
int32_t base;
|
int32_t base;
|
||||||
int32_t max;
|
int32_t max;
|
||||||
|
// Indicates if max frequency was measured
|
||||||
|
bool measured;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hypervisor {
|
struct hypervisor {
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ struct uarch* get_cpu_uarch(struct cpuInfo* cpu) {
|
|||||||
struct frequency* get_frequency_info(void) {
|
struct frequency* get_frequency_info(void) {
|
||||||
struct frequency* freq = emalloc(sizeof(struct frequency));
|
struct frequency* freq = emalloc(sizeof(struct frequency));
|
||||||
|
|
||||||
|
freq->measured = false;
|
||||||
freq->max = get_max_freq_from_file(0);
|
freq->max = get_max_freq_from_file(0);
|
||||||
freq->base = get_min_freq_from_file(0);
|
freq->base = get_min_freq_from_file(0);
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
struct frequency* get_frequency_info(uint32_t core) {
|
struct frequency* get_frequency_info(uint32_t core) {
|
||||||
struct frequency* freq = emalloc(sizeof(struct frequency));
|
struct frequency* freq = emalloc(sizeof(struct frequency));
|
||||||
|
|
||||||
|
freq->measured = false;
|
||||||
freq->base = UNKNOWN_DATA;
|
freq->base = UNKNOWN_DATA;
|
||||||
freq->max = get_max_freq_from_file(core);
|
freq->max = get_max_freq_from_file(core);
|
||||||
|
|
||||||
|
|||||||
@@ -923,6 +923,7 @@ struct cache* get_cache_info(struct cpuInfo* cpu) {
|
|||||||
|
|
||||||
struct frequency* get_frequency_info(struct cpuInfo* cpu) {
|
struct frequency* get_frequency_info(struct cpuInfo* cpu) {
|
||||||
struct frequency* freq = emalloc(sizeof(struct frequency));
|
struct frequency* freq = emalloc(sizeof(struct frequency));
|
||||||
|
freq->measured = false;
|
||||||
|
|
||||||
if(cpu->maxLevels < 0x00000016) {
|
if(cpu->maxLevels < 0x00000016) {
|
||||||
#if defined (_WIN32) || defined (__APPLE__)
|
#if defined (_WIN32) || defined (__APPLE__)
|
||||||
@@ -976,6 +977,7 @@ struct frequency* get_frequency_info(struct cpuInfo* cpu) {
|
|||||||
printWarn("All previous methods failed, measuring CPU frequency");
|
printWarn("All previous methods failed, measuring CPU frequency");
|
||||||
// TODO: Support hybrid architectures
|
// TODO: Support hybrid architectures
|
||||||
freq->max = measure_max_frequency(0);
|
freq->max = measure_max_frequency(0);
|
||||||
|
freq->measured = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user