View Full Version : Aiuto funzione in C che ricava la f. della CPU!!!!!
DarkSun84
18-10-2005, 19:01
Ciao a tutti, volevo sapere se conoscete una funzione in C che mi legge direttamente il valore della frequenza della CPU (sotto linux naturalmente ;) ), grazie.
DarkSun84
21-10-2005, 21:57
Ho trovato un modo anche se sto cercando di farlo tramite funzione, lo posto cmq se serve ad altri: cat /proc/cpuinfo
Scriviti da te la funzione, ad es.:
#include <stdio.h>
#include <string.h>
float cpuClockSpeed(void)
{
FILE *fp;
char buffer[1024];
float clockSpeed = 0;
if ((fp = fopen("/proc/cpuinfo", "r"))) {
while (fgets(buffer, 1024, fp)) {
char *match;
if ((match = strstr(buffer, "cpu MHz"))) {
sscanf(match, "cpu MHz : %f", &clockSpeed);
break;
}
}
fclose(fp);
}
return clockSpeed;
}
int main(void)
{
printf("Frequenza CPU: %4.0f MHz\n", cpuClockSpeed());
return 0;
}
DarkSun84
23-10-2005, 13:46
Grazie Qu@ker ;) , nel frattempo ho trovato fra le librerie in /usr/include/linux la seguente: cpufreq.h ed in essa la seguente dichiarazione di funz. : unsigned int cpufreq_get(unsigned int cpu); il problema è che non riesco a capire dove sta la sua implementazione se qualcuno mi potrebbe aiutare a capire almeno come utilizzare questa funzione nel mio programma, grazie.
L'implementazione e' nei sorgenti del kernel, e piu' precisamente in <kernel source>/drivers/cpufreq/cpufreq.c.
Fa parte del modulo del kernel per la variazione dinamica della velocita' della CPU (si usa in genere nei portatili per risparmiare la batteria).
DarkSun84
23-10-2005, 20:12
Ok, ho trovato la sua implementazione e i problemi si moltiplicano...la funzione prende come parametro un unsigned int cpu, ovvero nel codice int cpu prende il valore sys_dev->id, ora sys_dev è un puntatore a una struct di tipo sys_device, che viene dereferenziato accedendo alla funzione id o mi sbaglio? ? :mc: da qui in poi non ho la minima idea su come poter mettere mano su tutto..è forse una catena infinita? :cry:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.