[Cpufreqd-devel] sources TODO,1.20,1.21 cpufreqd.h,1.43,1.44 libsys.c,1.9,1.10 libsys.h,1.7,1.8 stri
Brought to you by:
mattia-san
From: Mattia D. <mat...@us...> - 2004-08-19 20:20:05
|
Update of /cvsroot/cpufreqd/sources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14508 Modified Files: TODO cpufreqd.h libsys.c libsys.h string_list.h Log Message: - fixed /proc/stat reads in kernel 2.6 - added kernel version detection - updated TODO Index: string_list.h =================================================================== RCS file: /cvsroot/cpufreqd/sources/string_list.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** string_list.h 4 Jan 2004 21:33:24 -0000 1.5 --- string_list.h 19 Aug 2004 20:19:41 -0000 1.6 *************** *** 20,23 **** --- 20,26 ---- #include <string.h> + #ifndef __STRINGLIST_H + #define __STRINGLIST_H + /* * Doubly linked list *************** *** 63,64 **** --- 66,68 ---- void string_list_append(struct string_list *list, struct string_node *node); + #endif Index: cpufreqd.h =================================================================== RCS file: /cvsroot/cpufreqd/sources/cpufreqd.h,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** cpufreqd.h 31 Jul 2004 16:54:20 -0000 1.43 --- cpufreqd.h 19 Aug 2004 20:19:41 -0000 1.44 *************** *** 24,27 **** --- 24,30 ---- */ + #ifndef __CPUFREQD_H + #define __CPUFREQD_H + #include <stdio.h> #include <stdarg.h> *************** *** 83,86 **** --- 86,93 ---- #define CPUFREQ_PROC_INTERFACE_MAX "/proc/sys/cpu/0/speed-max" + /* kernel version constants */ + #define KVER_24 1 + #define KVER_26 2 + typedef struct { int min; *************** *** 150,155 **** --- 157,164 ---- long int cpu_max_freq; int log_level; + int kver; rule *rules; profile *profiles; } general; + #endif Index: libsys.h =================================================================== RCS file: /cvsroot/cpufreqd/sources/libsys.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** libsys.h 4 Jan 2004 21:33:24 -0000 1.7 --- libsys.h 19 Aug 2004 20:19:41 -0000 1.8 *************** *** 27,43 **** int get_cpu(void); - /* WARNING: already implemented, don't overwrite! - * - * This function is called before libsys_init to - * setup the common infrastructure for plugins. - * - * what's provided: - * - * void log (int prio, char *fmt, ...); - * use the log priorities from syslog (man 3 syslog). - * This function shares the log_level global variable in order - * not to mix different log priorities. - */ - void libsys_preinit(void (*in_log) (const int prio, const char *fmt, ...), general *config); /* --- 27,30 ---- Index: TODO =================================================================== RCS file: /cvsroot/cpufreqd/sources/TODO,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** TODO 31 Jul 2004 16:54:20 -0000 1.20 --- TODO 19 Aug 2004 20:19:41 -0000 1.21 *************** *** 1,4 **** --- 1,6 ---- ------- cpufreqd1 --------- + - fix /proc/stat reads in kernel 2.6 + ------- cpufreqd2 --------- Index: libsys.c =================================================================== RCS file: /cvsroot/cpufreqd/sources/libsys.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** libsys.c 7 Aug 2004 17:49:15 -0000 1.9 --- libsys.c 19 Aug 2004 20:19:41 -0000 1.10 *************** *** 3,6 **** --- 3,10 ---- * George Staikos <st...@0w...> * + * 2004.08.19 + * - fixed /proc/stat reads in 2.6 kernels by Holger Ruckdeschel + * - detect kernel version (usefull??) by Mattia Dongili + * * 2003.16.08 * - added support for cpu monitoring, base code by Dietz Proepper and minor *************** *** 23,32 **** #include "libsys.h" ! unsigned int old_weighted_activity = 0, ! old_time = 0; void libsys_preinit ( void (*in_log) (const int prio, const char *fmt, ...), general *config ) { cp_log = in_log; configuration = config; cp_log(LOG_INFO, "libsys_preinit(): pre-initialization done.\n"); } --- 27,70 ---- #include "libsys.h" ! void libsys_preinit(void (*in_log) (const int prio, const char *fmt, ...), general *config); ! ! static unsigned int old_weighted_activity = 0, ! old_time = 0; ! ! static int get_kversion(void) { ! FILE *fp; ! char kver[256]; ! int f = 0; ! ! fp = fopen ("/proc/version", "r"); ! if (!fp) { ! cp_log(LOG_ERR, "get_kversion(): %s: %s\n", "/proc/version", strerror(errno)); ! return -1; ! } ! do { ! f = fscanf (fp, "Linux version %s", kver); ! } while (f != 1); ! fclose(fp); ! kver[255] = '\0'; ! ! cp_log(LOG_INFO, "get_kversion(): read kernel version %s.\n", kver); ! ! if (strstr(kver, "2.6") == kver) { ! cp_log(LOG_INFO, "get_kversion(): kernel version is 2.6.\n"); ! return KVER_26; ! } else if (strstr(kver, "2.4") == kver) { ! cp_log(LOG_INFO, "get_kversion(): kernel version is 2.4.\n"); ! return KVER_24; ! } else { ! cp_log(LOG_WARNING, "Unknown kernel version let's try to continue assuming a 2.6 kernel.\n"); ! return KVER_26; ! } ! ! } void libsys_preinit ( void (*in_log) (const int prio, const char *fmt, ...), general *config ) { cp_log = in_log; configuration = config; + config->kver = get_kversion(); cp_log(LOG_INFO, "libsys_preinit(): pre-initialization done.\n"); } *************** *** 36,40 **** int f; unsigned int c_user, c_nice, c_sys, c_time, delta_time, delta_activity, weighted_activity, perc; ! unsigned long c_idle; /* read raw jiffies... */ --- 74,79 ---- int f; unsigned int c_user, c_nice, c_sys, c_time, delta_time, delta_activity, weighted_activity, perc; ! unsigned long int c_idle; ! unsigned long int c_iowait=0, c_irq=0, c_softirq=0; /* for linux 2.6 only */ /* read raw jiffies... */ *************** *** 45,53 **** } do { ! f = fscanf (fp, "cpu %u %u %u %lu", &c_user, &c_nice, &c_sys, &c_idle); ! } while (f != 4); fclose(fp); /* calculate total jiffies, weight them and save */ c_time = c_user + c_nice + c_sys + c_idle; delta_time = c_time - old_time; --- 84,97 ---- } do { ! f = fscanf (fp, ! "cpu %u %u %u %lu %lu %lu %lu", ! &c_user, &c_nice, &c_sys, &c_idle, &c_iowait, &c_irq, &c_softirq); ! ! } while ((f!=4 && configuration->kver==KVER_24) || (f!=7 && configuration->kver==KVER_26)); fclose(fp); /* calculate total jiffies, weight them and save */ + c_sys += c_irq + c_softirq; + c_idle += c_iowait; c_time = c_user + c_nice + c_sys + c_idle; delta_time = c_time - old_time; *************** *** 58,62 **** old_weighted_activity = weighted_activity; ! if ( delta_activity > delta_time || delta_time == 0) { perc = 100; } else { --- 102,110 ---- old_weighted_activity = weighted_activity; ! cp_log(LOG_DEBUG, ! "get_cpu(): CPU delta_activity=%d delta_time=%d weighted_activity=%d c_sys=%d c_idle=%d c_time=%d c_nice=%d.\n", ! delta_activity, delta_time, weighted_activity, c_sys, c_idle, c_time, c_nice); ! ! if ( delta_activity > delta_time || delta_time <= 0) { perc = 100; } else { |