mirror of
https://github.com/lm-sensors/lm-sensors
synced 2025-09-02 15:25:38 +00:00
struct sensors_proc_chips_entry now has a single member, so we may
as well use this member directly for slightly more simple code. git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-3.0.0@4474 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
@@ -304,7 +304,7 @@ const sensors_chip_name *sensors_get_detected_chips(int *nr)
|
|||||||
{
|
{
|
||||||
const sensors_chip_name *res;
|
const sensors_chip_name *res;
|
||||||
res = (*nr >= sensors_proc_chips_count ?
|
res = (*nr >= sensors_proc_chips_count ?
|
||||||
NULL : &sensors_proc_chips[*nr].name);
|
NULL : &sensors_proc_chips[*nr]);
|
||||||
(*nr)++;
|
(*nr)++;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@@ -36,7 +36,7 @@ sensors_bus *sensors_config_busses = NULL;
|
|||||||
int sensors_config_busses_count = 0;
|
int sensors_config_busses_count = 0;
|
||||||
int sensors_config_busses_max = 0;
|
int sensors_config_busses_max = 0;
|
||||||
|
|
||||||
sensors_proc_chips_entry *sensors_proc_chips = NULL;
|
sensors_chip_name *sensors_proc_chips = NULL;
|
||||||
int sensors_proc_chips_count = 0;
|
int sensors_proc_chips_count = 0;
|
||||||
int sensors_proc_chips_max = 0;
|
int sensors_proc_chips_max = 0;
|
||||||
|
|
||||||
|
@@ -118,11 +118,6 @@ typedef struct sensors_bus {
|
|||||||
int lineno;
|
int lineno;
|
||||||
} sensors_bus;
|
} sensors_bus;
|
||||||
|
|
||||||
/* /proc/sys/dev/sensors/chips line representation */
|
|
||||||
typedef struct sensors_proc_chips_entry {
|
|
||||||
sensors_chip_name name;
|
|
||||||
} sensors_proc_chips_entry;
|
|
||||||
|
|
||||||
/* Internal data about a single chip feature.
|
/* Internal data about a single chip feature.
|
||||||
name is the string name used to refer to this feature (both in config
|
name is the string name used to refer to this feature (both in config
|
||||||
files and through user functions);
|
files and through user functions);
|
||||||
@@ -164,13 +159,13 @@ extern sensors_bus *sensors_config_busses;
|
|||||||
extern int sensors_config_busses_count;
|
extern int sensors_config_busses_count;
|
||||||
extern int sensors_config_busses_max;
|
extern int sensors_config_busses_max;
|
||||||
|
|
||||||
extern sensors_proc_chips_entry *sensors_proc_chips;
|
extern sensors_chip_name *sensors_proc_chips;
|
||||||
extern int sensors_proc_chips_count;
|
extern int sensors_proc_chips_count;
|
||||||
extern int sensors_proc_chips_max;
|
extern int sensors_proc_chips_max;
|
||||||
|
|
||||||
#define sensors_add_proc_chips(el) sensors_add_array_el( \
|
#define sensors_add_proc_chips(el) sensors_add_array_el( \
|
||||||
(el), &sensors_proc_chips, &sensors_proc_chips_count,\
|
(el), &sensors_proc_chips, &sensors_proc_chips_count,\
|
||||||
&sensors_proc_chips_max, sizeof(struct sensors_proc_chips_entry))
|
&sensors_proc_chips_max, sizeof(struct sensors_chip_name))
|
||||||
|
|
||||||
extern sensors_bus *sensors_proc_bus;
|
extern sensors_bus *sensors_proc_bus;
|
||||||
extern int sensors_proc_bus_count;
|
extern int sensors_proc_bus_count;
|
||||||
|
@@ -27,7 +27,6 @@
|
|||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
#include "scanner.h"
|
#include "scanner.h"
|
||||||
|
|
||||||
static void free_proc_chips_entry(sensors_proc_chips_entry entry);
|
|
||||||
static void free_chip_name(sensors_chip_name name);
|
static void free_chip_name(sensors_chip_name name);
|
||||||
static void free_bus(sensors_bus bus);
|
static void free_bus(sensors_bus bus);
|
||||||
static void free_chip(sensors_chip chip);
|
static void free_chip(sensors_chip chip);
|
||||||
@@ -61,7 +60,7 @@ void sensors_cleanup(void)
|
|||||||
sensors_scanner_exit();
|
sensors_scanner_exit();
|
||||||
|
|
||||||
for (i = 0; i < sensors_proc_chips_count; i++)
|
for (i = 0; i < sensors_proc_chips_count; i++)
|
||||||
free_proc_chips_entry(sensors_proc_chips[i]);
|
free_chip_name(sensors_proc_chips[i]);
|
||||||
free(sensors_proc_chips);
|
free(sensors_proc_chips);
|
||||||
sensors_proc_chips = NULL;
|
sensors_proc_chips = NULL;
|
||||||
sensors_proc_chips_count = sensors_proc_chips_max = 0;
|
sensors_proc_chips_count = sensors_proc_chips_max = 0;
|
||||||
@@ -85,11 +84,6 @@ void sensors_cleanup(void)
|
|||||||
sensors_proc_bus_count = sensors_proc_bus_max = 0;
|
sensors_proc_bus_count = sensors_proc_bus_max = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_proc_chips_entry(sensors_proc_chips_entry entry)
|
|
||||||
{
|
|
||||||
free_chip_name(entry.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void free_chip_name(sensors_chip_name name)
|
void free_chip_name(sensors_chip_name name)
|
||||||
{
|
{
|
||||||
free(name.prefix);
|
free(name.prefix);
|
||||||
|
32
lib/sysfs.c
32
lib/sysfs.c
@@ -219,7 +219,7 @@ static int sensors_read_one_sysfs_chip(struct sysfs_device *dev)
|
|||||||
int domain, bus, slot, fn, i;
|
int domain, bus, slot, fn, i;
|
||||||
struct sysfs_attribute *attr, *bus_attr;
|
struct sysfs_attribute *attr, *bus_attr;
|
||||||
char bus_path[SYSFS_PATH_MAX];
|
char bus_path[SYSFS_PATH_MAX];
|
||||||
sensors_proc_chips_entry entry;
|
sensors_chip_name name;
|
||||||
|
|
||||||
/* ignore any device without name attribute */
|
/* ignore any device without name attribute */
|
||||||
if (!(attr = sysfs_get_device_attr(dev, "name")))
|
if (!(attr = sysfs_get_device_attr(dev, "name")))
|
||||||
@@ -231,22 +231,22 @@ static int sensors_read_one_sysfs_chip(struct sysfs_device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* NB: attr->value[attr->len-1] == '\n'; chop that off */
|
/* NB: attr->value[attr->len-1] == '\n'; chop that off */
|
||||||
entry.name.prefix = strndup(attr->value, attr->len - 1);
|
name.prefix = strndup(attr->value, attr->len - 1);
|
||||||
if (!entry.name.prefix)
|
if (!name.prefix)
|
||||||
sensors_fatal_error(__FUNCTION__, "out of memory");
|
sensors_fatal_error(__FUNCTION__, "out of memory");
|
||||||
|
|
||||||
entry.name.busname = strdup(dev->path);
|
name.busname = strdup(dev->path);
|
||||||
if (!entry.name.busname)
|
if (!name.busname)
|
||||||
sensors_fatal_error(__FUNCTION__, "out of memory");
|
sensors_fatal_error(__FUNCTION__, "out of memory");
|
||||||
|
|
||||||
if (sscanf(dev->name, "%d-%x", &entry.name.bus, &entry.name.addr) == 2) {
|
if (sscanf(dev->name, "%d-%x", &name.bus, &name.addr) == 2) {
|
||||||
/* find out if legacy ISA or not */
|
/* find out if legacy ISA or not */
|
||||||
if (entry.name.bus == 9191)
|
if (name.bus == 9191)
|
||||||
entry.name.bus = SENSORS_CHIP_NAME_BUS_ISA;
|
name.bus = SENSORS_CHIP_NAME_BUS_ISA;
|
||||||
else {
|
else {
|
||||||
snprintf(bus_path, sizeof(bus_path),
|
snprintf(bus_path, sizeof(bus_path),
|
||||||
"%s/class/i2c-adapter/i2c-%d/device/name",
|
"%s/class/i2c-adapter/i2c-%d/device/name",
|
||||||
sensors_sysfs_mount, entry.name.bus);
|
sensors_sysfs_mount, name.bus);
|
||||||
|
|
||||||
if ((bus_attr = sysfs_open_attribute(bus_path))) {
|
if ((bus_attr = sysfs_open_attribute(bus_path))) {
|
||||||
if (sysfs_read_attribute(bus_attr))
|
if (sysfs_read_attribute(bus_attr))
|
||||||
@@ -254,24 +254,24 @@ static int sensors_read_one_sysfs_chip(struct sysfs_device *dev)
|
|||||||
|
|
||||||
if (bus_attr->value
|
if (bus_attr->value
|
||||||
&& !strncmp(bus_attr->value, "ISA ", 4))
|
&& !strncmp(bus_attr->value, "ISA ", 4))
|
||||||
entry.name.bus = SENSORS_CHIP_NAME_BUS_ISA;
|
name.bus = SENSORS_CHIP_NAME_BUS_ISA;
|
||||||
|
|
||||||
sysfs_close_attribute(bus_attr);
|
sysfs_close_attribute(bus_attr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (sscanf(dev->name, "%*[a-z0-9_].%d", &entry.name.addr) == 1) {
|
} else if (sscanf(dev->name, "%*[a-z0-9_].%d", &name.addr) == 1) {
|
||||||
/* must be new ISA (platform driver) */
|
/* must be new ISA (platform driver) */
|
||||||
entry.name.bus = SENSORS_CHIP_NAME_BUS_ISA;
|
name.bus = SENSORS_CHIP_NAME_BUS_ISA;
|
||||||
} else if (sscanf(dev->name, "%x:%x:%x.%x", &domain, &bus, &slot, &fn) == 4) {
|
} else if (sscanf(dev->name, "%x:%x:%x.%x", &domain, &bus, &slot, &fn) == 4) {
|
||||||
/* PCI */
|
/* PCI */
|
||||||
entry.name.addr = (domain << 16) + (bus << 8) + (slot << 3) + fn;
|
name.addr = (domain << 16) + (bus << 8) + (slot << 3) + fn;
|
||||||
entry.name.bus = SENSORS_CHIP_NAME_BUS_PCI;
|
name.bus = SENSORS_CHIP_NAME_BUS_PCI;
|
||||||
} else
|
} else
|
||||||
return -SENSORS_ERR_PARSE;
|
return -SENSORS_ERR_PARSE;
|
||||||
|
|
||||||
/* check whether this chip is known in the static list */
|
/* check whether this chip is known in the static list */
|
||||||
for (i = 0; sensors_chip_features_list[i].prefix; i++)
|
for (i = 0; sensors_chip_features_list[i].prefix; i++)
|
||||||
if (!strcasecmp(sensors_chip_features_list[i].prefix, entry.name.prefix))
|
if (!strcasecmp(sensors_chip_features_list[i].prefix, name.prefix))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* if no chip definition matches */
|
/* if no chip definition matches */
|
||||||
@@ -287,7 +287,7 @@ static int sensors_read_one_sysfs_chip(struct sysfs_device *dev)
|
|||||||
total_dynamic++;
|
total_dynamic++;
|
||||||
}
|
}
|
||||||
|
|
||||||
sensors_add_proc_chips(&entry);
|
sensors_add_proc_chips(&name);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user