Commit 7f3cc8f8 authored by Guenter Roeck's avatar Guenter Roeck

hwmon: Report attribute name with udev events

Up to now udev events only report the affected hwmon device if an alert
is reported. This requires userspace to read all attributes if it wants
to know what triggered the event. Provide the attribute name with the
NAME property to help userspace find the attribute causing the event.
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 686d303e
...@@ -625,7 +625,9 @@ static const int __templates_size[] = { ...@@ -625,7 +625,9 @@ static const int __templates_size[] = {
int hwmon_notify_event(struct device *dev, enum hwmon_sensor_types type, int hwmon_notify_event(struct device *dev, enum hwmon_sensor_types type,
u32 attr, int channel) u32 attr, int channel)
{ {
char event[MAX_SYSFS_ATTR_NAME_LENGTH + 5];
char sattr[MAX_SYSFS_ATTR_NAME_LENGTH]; char sattr[MAX_SYSFS_ATTR_NAME_LENGTH];
char *envp[] = { event, NULL };
const char * const *templates; const char * const *templates;
const char *template; const char *template;
int base; int base;
...@@ -641,8 +643,9 @@ int hwmon_notify_event(struct device *dev, enum hwmon_sensor_types type, ...@@ -641,8 +643,9 @@ int hwmon_notify_event(struct device *dev, enum hwmon_sensor_types type,
base = hwmon_attr_base(type); base = hwmon_attr_base(type);
scnprintf(sattr, MAX_SYSFS_ATTR_NAME_LENGTH, template, base + channel); scnprintf(sattr, MAX_SYSFS_ATTR_NAME_LENGTH, template, base + channel);
scnprintf(event, sizeof(event), "NAME=%s", sattr);
sysfs_notify(&dev->kobj, NULL, sattr); sysfs_notify(&dev->kobj, NULL, sattr);
kobject_uevent(&dev->kobj, KOBJ_CHANGE); kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp);
if (type == hwmon_temp) if (type == hwmon_temp)
hwmon_thermal_notify(dev, channel); hwmon_thermal_notify(dev, channel);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment