diff options
Diffstat (limited to 'sys-power/cpufreqd/files/cpufreqd-2.3.4-lm_sensors-3.patch')
-rw-r--r-- | sys-power/cpufreqd/files/cpufreqd-2.3.4-lm_sensors-3.patch | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/sys-power/cpufreqd/files/cpufreqd-2.3.4-lm_sensors-3.patch b/sys-power/cpufreqd/files/cpufreqd-2.3.4-lm_sensors-3.patch deleted file mode 100644 index e15b0bbee37a..000000000000 --- a/sys-power/cpufreqd/files/cpufreqd-2.3.4-lm_sensors-3.patch +++ /dev/null @@ -1,156 +0,0 @@ ---- src/cpufreqd_sensors.c.orig 2009-03-21 12:17:15.000000000 +0100 -+++ src/cpufreqd_sensors.c 2009-08-14 14:39:52.894513594 +0200 -@@ -23,10 +23,22 @@ - #include <string.h> - #include "cpufreqd_plugin.h" - -+#if !defined __GNUC__ || __GNUC__ < 3 -+#define __attribute__(x) -+#endif -+ -+#if SENSORS_API_VERSION < 0x400 -+typedef sensors_feature_data sensors_feature; -+#endif -+ - /* to hold monitored feature list and avoid reading all sensors */ - struct sensors_monitor { - const sensors_chip_name *chip; -- const sensors_feature_data *feat; -+ char chip_string[MAX_STRING_LEN]; -+ const sensors_feature *feat; -+#if SENSORS_API_VERSION >= 0x400 -+ const sensors_subfeature *sub_feat; -+#endif - double value; - struct sensors_monitor *next; - }; -@@ -133,27 +145,74 @@ - struct sensors_monitor *list = monitor_list; - - while (list) { -- sensors_get_feature(*(list->chip), list->feat->number, &list->value); -- clog(LOG_INFO, "%s: %.3f\n", list->feat->name, list->value); -+#if SENSORS_API_VERSION >= 0x400 -+ if(sensors_get_value(list->chip, list->sub_feat->number, &list->value) < 0) { -+#else -+ if(sensors_get_feature(*(list->chip), list->feat->number, &list->value) < 0) { -+#endif -+ clog(LOG_ERR,"could not read value for %s\n",list->feat->name); -+ return -1; -+ } -+ clog(LOG_INFO, "%s:%s: %.3f\n", list->chip_string, list->feat->name, list->value); - list = list->next; - } - - return 0; - } - -+ -+#if SENSORS_API_VERSION < 0x400 -+/* Adapted from lm-sensors 2.10.8 prog/sensors/main.c */ -+static int sensors_snprintf_chip_name(char *str, size_t size, -+ const sensors_chip_name *chip) -+{ -+ switch(chip->bus) { -+ case SENSORS_CHIP_NAME_BUS_ISA: -+ return snprintf(str,size,"%s-isa-%04x",chip->prefix,chip->addr); -+ case SENSORS_CHIP_NAME_BUS_PCI: -+ return snprintf(str,size,"%s-pci-%04x",chip->prefix,chip->addr); -+ case SENSORS_CHIP_NAME_BUS_DUMMY: -+ return snprintf(str,size,"%s-%s-%04x",chip->prefix,chip->busname,chip->addr); -+ default: -+ return snprintf(str,size,"%s-i2c-%d-%02x",chip->prefix,chip->bus,chip->addr); -+ } -+} -+#endif -+ -+__attribute__((unused)) static const char* sensors_get_chip_name(const sensors_chip_name *chip); -+static const char* sensors_get_chip_name(const sensors_chip_name *chip) { -+ static char name[MAX_STRING_LEN]; -+ sensors_snprintf_chip_name(name, MAX_STRING_LEN, chip); -+ return name; -+} -+ - /* this function can be pretty expensive (CPU time)?? */ - static struct sensors_monitor * validate_feature_name(const char *name) { - - /* get all sensors from first chip */ - const sensors_chip_name *chip; -- const sensors_feature_data *feat; -- int nr = 0, nr1 = 0, nr2 = 0; -+ const sensors_feature *feat; -+ int nr = 0; -+#if SENSORS_API_VERSION >= 0x400 -+ const sensors_subfeature *sub_feat; -+#else -+ int nr1 = 0, nr2 = 0; -+#endif - struct sensors_monitor *list = monitor_list; - struct sensors_monitor *ret = NULL; - - /* scan the full thing */ -+#if SENSORS_API_VERSION >= 0x400 -+ while ( (chip = sensors_get_detected_chips(NULL, &nr)) != NULL) { -+ while ((feat = sensors_get_features(chip, &nr)) != NULL) { -+ /* sensor input? */ -+ if((sub_feat = sensors_get_subfeature(chip, feat, feat->type << 8)) == NULL) { -+ clog(LOG_DEBUG, "Input subfeature not found for %s, skipping\n", feat->name); -+ continue; -+ } -+#else - while ( (chip = sensors_get_detected_chips(&nr)) != NULL) { -- nr1 = nr2 = 0; -+ nr1 = nr2 = 0; - char *label = NULL; - clog(LOG_DEBUG, "Examining chip %s(%d)\n", chip->prefix, nr); - while ((feat = sensors_get_all_features(*chip, &nr1, &nr2)) != NULL) { -@@ -164,22 +223,33 @@ - if (sensors_get_label(*chip, feat->number, &label) != 0) - clog(LOG_DEBUG, "Couldn't get label for %s (%s)\n", - feat->name, strerror(errno)); -+ } -+#endif - - /* is it the one we are looking for? */ -- if (strncmp(feat->name, name, MAX_STRING_LEN) != 0 && -- (label && strncmp(label, name, MAX_STRING_LEN) != 0)) { -- free(label); -+ if (strncmp(feat->name, name, MAX_STRING_LEN) != 0) { -+ continue; -+ -+/* libsensors4 does this in sensors_get_features() */ -+#if SENSORS_API_VERSION < 0x400 -+ /* not ignored? */ -+ } else if(sensors_get_ignored(*chip, feat->number) == 0) { -+ clog(LOG_INFO, "feature %s on chip %s set to ignore in %s, skipping\n", -+ feat->name, sensors_get_chip_name(chip), sensors_conffile); - continue; -+#endif - - /* cache it */ - } else if ((ret = calloc(1, sizeof(struct sensors_monitor))) != NULL) { -- clog(LOG_DEBUG, "Creating new sensors_monitor for %s (%s)\n", -- label, feat->name); -+ sensors_snprintf_chip_name(ret->chip_string, MAX_STRING_LEN, chip); -+ clog(LOG_DEBUG, "Creating new sensors_monitor for %s on chip %s\n", -+ name, ret->chip_string); - ret->chip = chip; - ret->feat = feat; -+#if SENSORS_API_VERSION >= 0x400 -+ ret->sub_feat = sub_feat; -+#endif - ret->next = NULL; -- /* free the label here, we are not using it anymore */ -- free(label); - /* append monitor to the cache list */ - list = monitor_list; - if (list != NULL) { -@@ -214,7 +284,7 @@ - clog(LOG_DEBUG, "called with %s\n", ev); - - /* try to parse the %[a-zA-Z0-9]:%d-%d format first */ -- if (sscanf(ev, "%32[^:]:%lf-%lf", ret->name, &ret->min, &ret->max) == 3) { -+ if (sscanf(ev, "%32[a-zA-Z0-9]:%lf-%lf", ret->name, &ret->min, &ret->max) == 3) { - /* validate feature name */ - if ((ret->monitor = validate_feature_name(ret->name)) != NULL) { - clog(LOG_INFO, "parsed %s %.3f-%.3f\n", ret->name, ret->min, ret->max); |