[lm-sensors] [patch 0/6] pc87360 SDA (sensor-dev-attr) callbacks - readme

jim.cromie at gmail.com jim.cromie at gmail.com
Wed Aug 31 00:41:26 CEST 2005

This patch set reworks hwmon/pc87360.c to use the SENSOR_DEVICE_ATTR
idiom by Yani Iannou, then uses the new member field to distinguish
which device is being accessed, eliminating the need for macro'd
repetition of a bunch of sysfs callback routines.

These patches are updated for 2.6.13 release, with minor header

The patches, Step-by-Step:

individual patches follow separately, but not in reply to this
(scripted send to avoid MIME attachments).  Also pls tolerate the
X-spam headers, the scripts Ive seen dont handle TLS, so I cant send
thru my normal mail-service.

01	i2c-pc87360-01-yani-callback-form.patch

a) Change DEVICE_ATTR declarations to SENSOR_DEVICE_ATTR declarations,
which have an additional index member

b) Rework sysfs-callbacks (embedded in macros) to use
to_sensor_dev_attr to do a typesefe conversion of a *device_attribute
to a *sensor_device_attribute.  Use the index member instead of the
offset macro-arg to access the right sensor.

c) Change the calls to device_create_file() to dereference the
sensor_device_attribute to pass its device_attribute member

d) added includes

Note that this change (DA -> SDA) isnt indiscriminate.  Only those
attrs that would benefit from having an index have been converted; ie
those which are macro-repeated.

 pc87360.c |  432 +++++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 231 insertions(+), 201 deletions(-)

02	i2c-pc87360-02-fn-renames.patch

Several of the macro-d functions rely on the ##offset## in the name to
disambiguate them from others, this patch alters the names so we can
drop the ##offset## in the next patch.

 pc87360.c |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

03.	i2c-pc87360-03-attr-callback-demacro.patch

Convert macro-repeated callback-fns to single declaration.  They're
already using attr->index (patch 1), and are disambiguated (patch 2),
so this is as close as possible to a white-space patch.

 pc87360.c |  586 +++++++++++++++++++++++++++++++-------------------------------
 1 files changed, 296 insertions(+), 290 deletions(-)

04.	i2c-pc87360-04-mv-offset-skew-2-init.patch

The temp, therm, fan, pwm callbacks all have an offset skew in the
code which accommodates attribute numbering conventions under
/sys/bus/i2c/devices/9191-6620/ (ie they start at 1)

This patch moves that skew into the declaration, and out of the
functions (except for therm, where we simplify from 2 skews to 1).
The declarative skew is clearer, less error-prone, and more efficient.

 pc87360.c |  104 +++++++++++++++++++++++++++++++-------------------------------
 1 files changed, 52 insertions(+), 52 deletions(-)

05.	i2c-pc87360-05-hwmon-sysfs-array-init.patch

This patch refactors SENSOR_DEVICE_ATTR macro.  1st it creates a new
macro __SENSOR_DEVICE_ATTR() which expands to an initialization
expression, then it uses that in SENSOR_DEVICE_ATTR, which declares
and initializes a struct sensor_device_attribute.

__SENSOR_DEVICE_ATTR() imitates __ATTR in include/linux/device.h

 hwmon-sysfs.h |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

06.	i2c-pc87360-06-array-init-loop.patch

With __SENSOR_DEVICE_ATTR's defined by 05, we now use them to
initialize a whole array of struct sensor_device_attributes.  This
allows us to loop over the array, and call device_create_file() for
each element.

 pc87360.c |  349 ++++++++++++++++++++++++++++----------------------------------
 1 files changed, 162 insertions(+), 187 deletions(-)

The 6 patches each incrementally; apply and compile clean, and pass
this cursory test: 
	rmmod pc87360; 
	make modules_install; 
	modprobe pc87360;
	sensors -s; 

sets on alarm thresholds also change alarm state.

Signed-off-by:  Jim Cromie <jim.cromie at gmail.com>

More information about the lm-sensors mailing list