mirror of
https://github.com/Dr-Noob/cpufetch.git
synced 2026-03-24 23:40:39 +01:00
Fixed freq bug. Improved Makefile and fixed some minor errors
This commit is contained in:
2
Makefile
2
Makefile
@@ -1,6 +1,6 @@
|
||||
CXX=gcc
|
||||
|
||||
CXXFLAGS=-g
|
||||
CXXFLAGS=-g -Wall -Werror -fstack-protector-all -pedantic -Wno-unused
|
||||
|
||||
SOURCE=main.c standart.c extended.c cpuid.c udev.c printer.c
|
||||
HEADERS=standart.h extended.h cpuid.h udev.h printer.h ascii.h
|
||||
|
||||
6
main.c
6
main.c
@@ -25,12 +25,12 @@ Peak FLOPS: 512 GFLOP/s(in simple precision)
|
||||
***/
|
||||
|
||||
int main() {
|
||||
struct cpuInfo* cpu = getCPUInfo(cpu);
|
||||
struct cpuInfo* cpu = getCPUInfo();
|
||||
if(cpu == NULL)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
struct cache* cach = new_cache(cach);
|
||||
struct frequency* freq = new_frequency(freq);
|
||||
struct cache* cach = new_cache();
|
||||
struct frequency* freq = new_frequency();
|
||||
struct ascii* ascii = set_ascii(getCPUVendorInternal(cpu));
|
||||
|
||||
char* cpuName = getString_CPUName();
|
||||
|
||||
11
standart.c
11
standart.c
@@ -2,9 +2,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "standart.h"
|
||||
#include "cpuid.h"
|
||||
#include "udev.h"
|
||||
|
||||
#define BOOLEAN_TRUE 1
|
||||
#define BOOLEAN_FALSE 0
|
||||
@@ -99,6 +101,7 @@ VENDOR getCPUVendor(unsigned eax,unsigned ebx,unsigned ecx,unsigned edx) {
|
||||
|
||||
struct cpuInfo* getCPUInfo() {
|
||||
struct cpuInfo* cpu = malloc(sizeof(struct cpuInfo));
|
||||
memset(cpu,0,sizeof(struct cpuInfo));
|
||||
initializeCpuInfo(cpu);
|
||||
|
||||
unsigned eax = 0;
|
||||
@@ -222,7 +225,15 @@ char* getPeakPerformance(struct cpuInfo* cpu, long freq) {
|
||||
|
||||
//7 for GFLOP/s and 6 for digits,eg 412.14
|
||||
int size = 7+6+1+1;
|
||||
assert(strlen(STRING_UNKNOWN)+1 <= size);
|
||||
char* string = malloc(sizeof(char)*size);
|
||||
|
||||
//First check we have consistent data
|
||||
if(freq == UNKNOWN) {
|
||||
snprintf(string,strlen(STRING_UNKNOWN)+1,STRING_UNKNOWN);
|
||||
return string;
|
||||
}
|
||||
|
||||
float flops = (cpu->nThreads/cpu->HT)*freq*2;
|
||||
|
||||
if(cpu->FMA3 || cpu->FMA4)
|
||||
|
||||
34
udev.c
34
udev.c
@@ -2,6 +2,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "udev.h"
|
||||
|
||||
@@ -29,13 +30,13 @@ int getSize(char* buf, int size) {
|
||||
char* end = strstr (buf,"K");
|
||||
if(end == NULL) {
|
||||
printf("ERROR in getSize(strstr)\n");
|
||||
return NO_CACHE;
|
||||
return UNKNOWN;
|
||||
}
|
||||
*end = 0;
|
||||
int cachsize = atoi(buf);
|
||||
if(cachsize == 0) {
|
||||
printf("ERROR in getSize(atoi)\n");
|
||||
return NO_CACHE;
|
||||
return UNKNOWN;
|
||||
}
|
||||
return cachsize;
|
||||
}
|
||||
@@ -43,7 +44,7 @@ int getSize(char* buf, int size) {
|
||||
/***
|
||||
|
||||
Returns size(in bytes) of cache described by path or
|
||||
NO_CACHE if the cache doest no exists
|
||||
UNKNOWN if the cache doest no exists
|
||||
|
||||
***/
|
||||
|
||||
@@ -54,7 +55,7 @@ int getCache(char* path) {
|
||||
|
||||
if(file == NULL) {
|
||||
//Doest not exist
|
||||
return NO_CACHE;
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
//File exists, read it
|
||||
@@ -88,7 +89,7 @@ long getFrequencyFromFile(char* path) {
|
||||
|
||||
if(file == NULL) {
|
||||
//Doest not exist
|
||||
return NO_CACHE;
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
//File exists, read it
|
||||
@@ -107,7 +108,7 @@ long getFrequencyFromFile(char* path) {
|
||||
free(buf);
|
||||
if(ret == 0) {
|
||||
printf("error in getFrequencyFromFile\n");
|
||||
return NO_CACHE;
|
||||
return UNKNOWN;
|
||||
}
|
||||
fclose(file);
|
||||
return (long)ret*1000;
|
||||
@@ -129,7 +130,7 @@ char* getString_L1(struct cache* cach) {
|
||||
}
|
||||
|
||||
char* getString_L2(struct cache* cach) {
|
||||
if(cach->L2 == NO_CACHE) {
|
||||
if(cach->L2 == UNKNOWN) {
|
||||
char* string = malloc(sizeof(char)*5);
|
||||
snprintf(string,5,STRING_NONE);
|
||||
return string;
|
||||
@@ -144,7 +145,7 @@ char* getString_L2(struct cache* cach) {
|
||||
}
|
||||
|
||||
char* getString_L3(struct cache* cach) {
|
||||
if(cach->L3 == NO_CACHE) {
|
||||
if(cach->L3 == UNKNOWN) {
|
||||
char* string = malloc(sizeof(char)*5);
|
||||
snprintf(string,5,STRING_NONE);
|
||||
return string;
|
||||
@@ -161,8 +162,11 @@ char* getString_L3(struct cache* cach) {
|
||||
char* getString_MaxFrequency(struct frequency* freq) {
|
||||
//Max 3 digits and 3 for '(M/G)Hz' plus 1 for '\0'
|
||||
int size = (4+3+1);
|
||||
assert(strlen(STRING_UNKNOWN)+1 <= size);
|
||||
char* string = malloc(sizeof(char)*size);
|
||||
if(freq->max >= 1000000000)
|
||||
if(freq->max == UNKNOWN)
|
||||
snprintf(string,strlen(STRING_UNKNOWN)+1,STRING_UNKNOWN);
|
||||
else if(freq->max >= 1000000000)
|
||||
snprintf(string,size,"%.2f"STRING_GIGAHERZ,(float)(freq->max)/1000000000);
|
||||
else
|
||||
snprintf(string,size,"%.2f"STRING_MEGAHERZ,(float)(freq->max)/1000000);
|
||||
@@ -171,8 +175,8 @@ char* getString_MaxFrequency(struct frequency* freq) {
|
||||
|
||||
/*** CREATES AND FREES ***/
|
||||
|
||||
struct cache* new_cache(struct cache* cach) {
|
||||
cach = malloc(sizeof(struct cache));
|
||||
struct cache* new_cache() {
|
||||
struct cache* cach = malloc(sizeof(struct cache));
|
||||
cach->L1i = getCache(_PATH_CACHE_L1i);
|
||||
cach->L1d = getCache(_PATH_CACHE_L1d);
|
||||
cach->L2 = getCache(_PATH_CACHE_L2);
|
||||
@@ -180,8 +184,8 @@ struct cache* new_cache(struct cache* cach) {
|
||||
return cach;
|
||||
}
|
||||
|
||||
struct frequency* new_frequency(struct frequency* freq) {
|
||||
freq = malloc(sizeof(struct frequency));
|
||||
struct frequency* new_frequency() {
|
||||
struct frequency* freq = malloc(sizeof(struct frequency));
|
||||
freq->max = getFrequencyFromFile(_PATH_FREQUENCY_MAX);
|
||||
freq->min = getFrequencyFromFile(_PATH_FREQUENCY_MIN);
|
||||
return freq;
|
||||
@@ -205,6 +209,6 @@ void debugCache(struct cache* cach) {
|
||||
}
|
||||
|
||||
void debugFrequency(struct frequency* freq) {
|
||||
printf("max f=%dMhz\n",freq->max);
|
||||
printf("min f=%dMhz\n",freq->min);
|
||||
printf("max f=%ldMhz\n",freq->max);
|
||||
printf("min f=%ldMhz\n",freq->min);
|
||||
}
|
||||
|
||||
7
udev.h
7
udev.h
@@ -19,11 +19,12 @@
|
||||
|
||||
/*** CONSTANTS ***/
|
||||
|
||||
#define NO_CACHE -1
|
||||
#define UNKNOWN -1
|
||||
#define DEFAULT_FILE_SIZE 4096
|
||||
#define DEFAULT_BLOCK_SIZE 128
|
||||
|
||||
/*** STRINGS ***/
|
||||
#define STRING_UNKNOWN "Unknown"
|
||||
#define STRING_NONE "None"
|
||||
#define STRING_MEGAHERZ "MHz"
|
||||
#define STRING_GIGAHERZ "GHz"
|
||||
@@ -36,14 +37,14 @@ struct frequency;
|
||||
|
||||
/*** FUNCTIONS ***/
|
||||
|
||||
struct cache* new_cache(struct cache* cach);
|
||||
struct cache* new_cache();
|
||||
void debugCache(struct cache* cach);
|
||||
void freeCache(struct cache* cach);
|
||||
char* getString_L1(struct cache* cach);
|
||||
char* getString_L2(struct cache* cach);
|
||||
char* getString_L3(struct cache* cach);
|
||||
|
||||
struct frequency* new_frequency(struct frequency* freq);
|
||||
struct frequency* new_frequency();
|
||||
void debugFrequency(struct frequency* freq);
|
||||
void freeFrequency(struct frequency* freq);
|
||||
char* getString_MaxFrequency(struct frequency* freq);
|
||||
|
||||
Reference in New Issue
Block a user