From e7c345f4cf90b53c2a6fb2e3b9ac2ceb3d6bcd86 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Sun, 23 Sep 2007 12:20:07 +0000 Subject: [PATCH] Pass a subfeature structure to sensors_read_sysfs_attr() and sensors_write_sysfs_attr(), rather than a subfeature number, so that we do not have to lookup the feature number again. git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-3.0.0@4841 7894878c-1315-0410-8ee3-d5d059ff63e0 --- lib/access.c | 4 ++-- lib/sysfs.c | 14 ++++---------- lib/sysfs.h | 6 ++++-- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/access.c b/lib/access.c index b4605663..96b8195a 100644 --- a/lib/access.c +++ b/lib/access.c @@ -256,7 +256,7 @@ int sensors_get_value(const sensors_chip_name *name, int subfeat_nr, } } - if (sensors_read_sysfs_attr(name, subfeat_nr, &val)) + if (sensors_read_sysfs_attr(name, subfeature, &val)) return -SENSORS_ERR_PROC; if (!expr) *result = val; @@ -306,7 +306,7 @@ int sensors_set_value(const sensors_chip_name *name, int subfeat_nr, if (expr) if ((res = sensors_eval_expr(name, expr, value, &to_write))) return res; - if (sensors_write_sysfs_attr(name, subfeat_nr, to_write)) + if (sensors_write_sysfs_attr(name, subfeature, to_write)) return -SENSORS_ERR_PROC; return 0; } diff --git a/lib/sysfs.c b/lib/sysfs.c index f96cee95..a700bea0 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -541,16 +541,13 @@ exit0: return ret; } -int sensors_read_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_read_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double *value) { - const sensors_subfeature *subfeature; char n[NAME_MAX]; FILE *f; - if (!(subfeature = sensors_lookup_subfeature_nr(name, subfeat_nr))) - return -SENSORS_ERR_NO_ENTRY; - snprintf(n, NAME_MAX, "%s/%s", name->path, subfeature->name); if ((f = fopen(n, "r"))) { int res = fscanf(f, "%lf", value); @@ -564,16 +561,13 @@ int sensors_read_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, return 0; } -int sensors_write_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_write_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double value) { - const sensors_subfeature *subfeature; char n[NAME_MAX]; FILE *f; - if (!(subfeature = sensors_lookup_subfeature_nr(name, subfeat_nr))) - return -SENSORS_ERR_NO_ENTRY; - snprintf(n, NAME_MAX, "%s/%s", name->path, subfeature->name); if ((f = fopen(n, "w"))) { value *= get_type_scaling(subfeature->type); diff --git a/lib/sysfs.h b/lib/sysfs.h index f90a7ae5..f547bd7d 100644 --- a/lib/sysfs.h +++ b/lib/sysfs.h @@ -29,11 +29,13 @@ int sensors_read_sysfs_chips(void); int sensors_read_sysfs_bus(void); /* Read a value out of a sysfs attribute file */ -int sensors_read_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_read_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double *value); /* Write a value to a sysfs attribute file */ -int sensors_write_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_write_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double value); #endif /* !SENSORS_LIB_SYSFS_H */