History

hwmon: (sysfs) Allow drivers to register const attributes

Switch to the __DEVICE_ATTR() macro which can handle callbacks taking both const and non-const attribute structure arguments. Allow the step-wise migration of the drivers. Also use container_of_const() over container_of() to avoid casting away the constness accidentally.

Thomas Weißschuh committed 3 months ago

Commit 87fdc8d1 parent 52fcdd52 files · +10 −10Browse files

Unified · Split

2 files
  1. drivers/hwmon/hwmon.c +3 −3
  2. include/linux/hwmon-sysfs.h +7 −7
drivers/hwmon/hwmon.c+3−3
@@ -341,7 +341,7 @@ static int hwmon_match_device(struct device *dev, const void *data) · 340 unmodified lines
341341 return dev->class == &hwmon_class;
342342 }
343343
344−static ssize_t pec_show(struct device *dev, struct device_attribute *dummy,
344+static ssize_t pec_show(struct device *dev, const struct device_attribute *dummy,
345345 char *buf)
346346 {
347347 struct i2c_client *client = to_i2c_client(dev);
@@ -349,7 +349,7 @@ static ssize_t pec_show(struct device *dev, struct device_attribute *dummy, · 1 unmodified line
349349 return sysfs_emit(buf, "%d\n", !!(client->flags & I2C_CLIENT_PEC));
350350 }
351351
352−static ssize_t pec_store(struct device *dev, struct device_attribute *devattr,
352+static ssize_t pec_store(struct device *dev, const struct device_attribute *devattr,
353353 const char *buf, size_t count)
354354 {
355355 struct i2c_client *client = to_i2c_client(dev);
@@ -390,7 +390,7 @@ put: · 34 unmodified lines
390390 return err;
391391 }
392392
393−static DEVICE_ATTR_RW(pec);
393+static const DEVICE_ATTR_RW(pec);
394394
395395 static void hwmon_remove_pec(void *dev)
396396 {
include/linux/hwmon-sysfs.h+7−7
@@ -15,10 +15,10 @@ struct sensor_device_attribute{ · 14 unmodified lines
1515 int index;
1616 };
1717 #define to_sensor_dev_attr(_dev_attr) \
18− container_of(_dev_attr, struct sensor_device_attribute, dev_attr)
18+ container_of_const(_dev_attr, struct sensor_device_attribute, dev_attr)
1919
20−#define SENSOR_ATTR(_name, _mode, _show, _store, _index) \
21− { .dev_attr = __ATTR(_name, _mode, _show, _store), \
20+#define SENSOR_ATTR(_name, _mode, _show, _store, _index) \
21+ { .dev_attr = __DEVICE_ATTR(_name, _mode, _show, _store), \
2222 .index = _index }
2323
2424 #define SENSOR_ATTR_RO(_name, _func, _index) \
@@ -49,11 +49,11 @@ struct sensor_device_attribute_2 { · 24 unmodified lines
4949 u8 nr;
5050 };
5151 #define to_sensor_dev_attr_2(_dev_attr) \
52− container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr)
52+ container_of_const(_dev_attr, struct sensor_device_attribute_2, dev_attr)
5353
54−#define SENSOR_ATTR_2(_name, _mode, _show, _store, _nr, _index) \
55− { .dev_attr = __ATTR(_name, _mode, _show, _store), \
56− .index = _index, \
54+#define SENSOR_ATTR_2(_name, _mode, _show, _store, _nr, _index) \
55+ { .dev_attr = __DEVICE_ATTR(_name, _mode, _show, _store), \
56+ .index = _index, \
5757 .nr = _nr }
5858
5959 #define SENSOR_ATTR_2_RO(_name, _func, _nr, _index) \

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t