diff options
author | Andi Kleen <andi@firstfloor.org> | 2010-01-05 06:47:58 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-07 20:04:47 -0500 |
commit | c9be0a36f9bf392a7984473124a67a12964df11f (patch) | |
tree | 23fcf49f277d9a093b2b29831811219410ad7b05 /arch | |
parent | 3d03ba4d1dd2246adff5a9ff1194a539b3bc05a7 (diff) |
sysdev: Pass attribute in sysdev_class attributes show/store
Passing the attribute to the low level IO functions allows all kinds
of cleanups, by sharing low level IO code without requiring
an own function for every piece of data.
Also drivers can extend the attributes with own data fields
and use that in the low level function.
Similar to sysdev_attributes and normal attributes.
This is a tree-wide sweep, converting everything in one go.
No functional changes in this patch other than passing the new
argument everywhere.
Tested on x86, the non x86 parts are uncompiled.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/txx9/generic/7segled.c | 5 | ||||
-rw-r--r-- | arch/s390/kernel/smp.c | 8 | ||||
-rw-r--r-- | arch/s390/kernel/time.c | 49 |
3 files changed, 47 insertions, 15 deletions
diff --git a/arch/mips/txx9/generic/7segled.c b/arch/mips/txx9/generic/7segled.c index 727ab21b6618..7f8416f86222 100644 --- a/arch/mips/txx9/generic/7segled.c +++ b/arch/mips/txx9/generic/7segled.c | |||
@@ -58,13 +58,16 @@ static ssize_t raw_store(struct sys_device *dev, | |||
58 | static SYSDEV_ATTR(ascii, 0200, NULL, ascii_store); | 58 | static SYSDEV_ATTR(ascii, 0200, NULL, ascii_store); |
59 | static SYSDEV_ATTR(raw, 0200, NULL, raw_store); | 59 | static SYSDEV_ATTR(raw, 0200, NULL, raw_store); |
60 | 60 | ||
61 | static ssize_t map_seg7_show(struct sysdev_class *class, char *buf) | 61 | static ssize_t map_seg7_show(struct sysdev_class *class, |
62 | struct sysdev_class_attribute *attr, | ||
63 | char *buf) | ||
62 | { | 64 | { |
63 | memcpy(buf, &txx9_seg7map, sizeof(txx9_seg7map)); | 65 | memcpy(buf, &txx9_seg7map, sizeof(txx9_seg7map)); |
64 | return sizeof(txx9_seg7map); | 66 | return sizeof(txx9_seg7map); |
65 | } | 67 | } |
66 | 68 | ||
67 | static ssize_t map_seg7_store(struct sysdev_class *class, | 69 | static ssize_t map_seg7_store(struct sysdev_class *class, |
70 | struct sysdev_class_attribute *attr, | ||
68 | const char *buf, size_t size) | 71 | const char *buf, size_t size) |
69 | { | 72 | { |
70 | if (size != sizeof(txx9_seg7map)) | 73 | if (size != sizeof(txx9_seg7map)) |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 8b10127c00ad..e2121099f03b 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -1020,7 +1020,9 @@ out: | |||
1020 | return rc; | 1020 | return rc; |
1021 | } | 1021 | } |
1022 | 1022 | ||
1023 | static ssize_t __ref rescan_store(struct sysdev_class *class, const char *buf, | 1023 | static ssize_t __ref rescan_store(struct sysdev_class *class, |
1024 | struct sysdev_class_attribute *attr, | ||
1025 | const char *buf, | ||
1024 | size_t count) | 1026 | size_t count) |
1025 | { | 1027 | { |
1026 | int rc; | 1028 | int rc; |
@@ -1041,7 +1043,9 @@ static ssize_t dispatching_show(struct sysdev_class *class, char *buf) | |||
1041 | return count; | 1043 | return count; |
1042 | } | 1044 | } |
1043 | 1045 | ||
1044 | static ssize_t dispatching_store(struct sysdev_class *dev, const char *buf, | 1046 | static ssize_t dispatching_store(struct sysdev_class *dev, |
1047 | struct sysdev_class_attribute *attr, | ||
1048 | const char *buf, | ||
1045 | size_t count) | 1049 | size_t count) |
1046 | { | 1050 | { |
1047 | int val, rc; | 1051 | int val, rc; |
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index a8f93f1705ad..75894c281710 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c | |||
@@ -1116,14 +1116,18 @@ static struct sys_device etr_port1_dev = { | |||
1116 | /* | 1116 | /* |
1117 | * ETR class attributes | 1117 | * ETR class attributes |
1118 | */ | 1118 | */ |
1119 | static ssize_t etr_stepping_port_show(struct sysdev_class *class, char *buf) | 1119 | static ssize_t etr_stepping_port_show(struct sysdev_class *class, |
1120 | struct sysdev_class_attribute *attr, | ||
1121 | char *buf) | ||
1120 | { | 1122 | { |
1121 | return sprintf(buf, "%i\n", etr_port0.esw.p); | 1123 | return sprintf(buf, "%i\n", etr_port0.esw.p); |
1122 | } | 1124 | } |
1123 | 1125 | ||
1124 | static SYSDEV_CLASS_ATTR(stepping_port, 0400, etr_stepping_port_show, NULL); | 1126 | static SYSDEV_CLASS_ATTR(stepping_port, 0400, etr_stepping_port_show, NULL); |
1125 | 1127 | ||
1126 | static ssize_t etr_stepping_mode_show(struct sysdev_class *class, char *buf) | 1128 | static ssize_t etr_stepping_mode_show(struct sysdev_class *class, |
1129 | struct sysdev_class_attribute *attr, | ||
1130 | char *buf) | ||
1127 | { | 1131 | { |
1128 | char *mode_str; | 1132 | char *mode_str; |
1129 | 1133 | ||
@@ -1584,7 +1588,9 @@ static struct sysdev_class stp_sysclass = { | |||
1584 | .name = "stp", | 1588 | .name = "stp", |
1585 | }; | 1589 | }; |
1586 | 1590 | ||
1587 | static ssize_t stp_ctn_id_show(struct sysdev_class *class, char *buf) | 1591 | static ssize_t stp_ctn_id_show(struct sysdev_class *class, |
1592 | struct sysdev_class_attribute *attr, | ||
1593 | char *buf) | ||
1588 | { | 1594 | { |
1589 | if (!stp_online) | 1595 | if (!stp_online) |
1590 | return -ENODATA; | 1596 | return -ENODATA; |
@@ -1594,7 +1600,9 @@ static ssize_t stp_ctn_id_show(struct sysdev_class *class, char *buf) | |||
1594 | 1600 | ||
1595 | static SYSDEV_CLASS_ATTR(ctn_id, 0400, stp_ctn_id_show, NULL); | 1601 | static SYSDEV_CLASS_ATTR(ctn_id, 0400, stp_ctn_id_show, NULL); |
1596 | 1602 | ||
1597 | static ssize_t stp_ctn_type_show(struct sysdev_class *class, char *buf) | 1603 | static ssize_t stp_ctn_type_show(struct sysdev_class *class, |
1604 | struct sysdev_class_attribute *attr, | ||
1605 | char *buf) | ||
1598 | { | 1606 | { |
1599 | if (!stp_online) | 1607 | if (!stp_online) |
1600 | return -ENODATA; | 1608 | return -ENODATA; |
@@ -1603,7 +1611,9 @@ static ssize_t stp_ctn_type_show(struct sysdev_class *class, char *buf) | |||
1603 | 1611 | ||
1604 | static SYSDEV_CLASS_ATTR(ctn_type, 0400, stp_ctn_type_show, NULL); | 1612 | static SYSDEV_CLASS_ATTR(ctn_type, 0400, stp_ctn_type_show, NULL); |
1605 | 1613 | ||
1606 | static ssize_t stp_dst_offset_show(struct sysdev_class *class, char *buf) | 1614 | static ssize_t stp_dst_offset_show(struct sysdev_class *class, |
1615 | struct sysdev_class_attribute *attr, | ||
1616 | char *buf) | ||
1607 | { | 1617 | { |
1608 | if (!stp_online || !(stp_info.vbits & 0x2000)) | 1618 | if (!stp_online || !(stp_info.vbits & 0x2000)) |
1609 | return -ENODATA; | 1619 | return -ENODATA; |
@@ -1612,7 +1622,9 @@ static ssize_t stp_dst_offset_show(struct sysdev_class *class, char *buf) | |||
1612 | 1622 | ||
1613 | static SYSDEV_CLASS_ATTR(dst_offset, 0400, stp_dst_offset_show, NULL); | 1623 | static SYSDEV_CLASS_ATTR(dst_offset, 0400, stp_dst_offset_show, NULL); |
1614 | 1624 | ||
1615 | static ssize_t stp_leap_seconds_show(struct sysdev_class *class, char *buf) | 1625 | static ssize_t stp_leap_seconds_show(struct sysdev_class *class, |
1626 | struct sysdev_class_attribute *attr, | ||
1627 | char *buf) | ||
1616 | { | 1628 | { |
1617 | if (!stp_online || !(stp_info.vbits & 0x8000)) | 1629 | if (!stp_online || !(stp_info.vbits & 0x8000)) |
1618 | return -ENODATA; | 1630 | return -ENODATA; |
@@ -1621,7 +1633,9 @@ static ssize_t stp_leap_seconds_show(struct sysdev_class *class, char *buf) | |||
1621 | 1633 | ||
1622 | static SYSDEV_CLASS_ATTR(leap_seconds, 0400, stp_leap_seconds_show, NULL); | 1634 | static SYSDEV_CLASS_ATTR(leap_seconds, 0400, stp_leap_seconds_show, NULL); |
1623 | 1635 | ||
1624 | static ssize_t stp_stratum_show(struct sysdev_class *class, char *buf) | 1636 | static ssize_t stp_stratum_show(struct sysdev_class *class, |
1637 | struct sysdev_class_attribute *attr, | ||
1638 | char *buf) | ||
1625 | { | 1639 | { |
1626 | if (!stp_online) | 1640 | if (!stp_online) |
1627 | return -ENODATA; | 1641 | return -ENODATA; |
@@ -1630,7 +1644,9 @@ static ssize_t stp_stratum_show(struct sysdev_class *class, char *buf) | |||
1630 | 1644 | ||
1631 | static SYSDEV_CLASS_ATTR(stratum, 0400, stp_stratum_show, NULL); | 1645 | static SYSDEV_CLASS_ATTR(stratum, 0400, stp_stratum_show, NULL); |
1632 | 1646 | ||
1633 | static ssize_t stp_time_offset_show(struct sysdev_class *class, char *buf) | 1647 | static ssize_t stp_time_offset_show(struct sysdev_class *class, |
1648 | struct sysdev_class_attribute *attr, | ||
1649 | char *buf) | ||
1634 | { | 1650 | { |
1635 | if (!stp_online || !(stp_info.vbits & 0x0800)) | 1651 | if (!stp_online || !(stp_info.vbits & 0x0800)) |
1636 | return -ENODATA; | 1652 | return -ENODATA; |
@@ -1639,7 +1655,9 @@ static ssize_t stp_time_offset_show(struct sysdev_class *class, char *buf) | |||
1639 | 1655 | ||
1640 | static SYSDEV_CLASS_ATTR(time_offset, 0400, stp_time_offset_show, NULL); | 1656 | static SYSDEV_CLASS_ATTR(time_offset, 0400, stp_time_offset_show, NULL); |
1641 | 1657 | ||
1642 | static ssize_t stp_time_zone_offset_show(struct sysdev_class *class, char *buf) | 1658 | static ssize_t stp_time_zone_offset_show(struct sysdev_class *class, |
1659 | struct sysdev_class_attribute *attr, | ||
1660 | char *buf) | ||
1643 | { | 1661 | { |
1644 | if (!stp_online || !(stp_info.vbits & 0x4000)) | 1662 | if (!stp_online || !(stp_info.vbits & 0x4000)) |
1645 | return -ENODATA; | 1663 | return -ENODATA; |
@@ -1649,7 +1667,9 @@ static ssize_t stp_time_zone_offset_show(struct sysdev_class *class, char *buf) | |||
1649 | static SYSDEV_CLASS_ATTR(time_zone_offset, 0400, | 1667 | static SYSDEV_CLASS_ATTR(time_zone_offset, 0400, |
1650 | stp_time_zone_offset_show, NULL); | 1668 | stp_time_zone_offset_show, NULL); |
1651 | 1669 | ||
1652 | static ssize_t stp_timing_mode_show(struct sysdev_class *class, char *buf) | 1670 | static ssize_t stp_timing_mode_show(struct sysdev_class *class, |
1671 | struct sysdev_class_attribute *attr, | ||
1672 | char *buf) | ||
1653 | { | 1673 | { |
1654 | if (!stp_online) | 1674 | if (!stp_online) |
1655 | return -ENODATA; | 1675 | return -ENODATA; |
@@ -1658,7 +1678,9 @@ static ssize_t stp_timing_mode_show(struct sysdev_class *class, char *buf) | |||
1658 | 1678 | ||
1659 | static SYSDEV_CLASS_ATTR(timing_mode, 0400, stp_timing_mode_show, NULL); | 1679 | static SYSDEV_CLASS_ATTR(timing_mode, 0400, stp_timing_mode_show, NULL); |
1660 | 1680 | ||
1661 | static ssize_t stp_timing_state_show(struct sysdev_class *class, char *buf) | 1681 | static ssize_t stp_timing_state_show(struct sysdev_class *class, |
1682 | struct sysdev_class_attribute *attr, | ||
1683 | char *buf) | ||
1662 | { | 1684 | { |
1663 | if (!stp_online) | 1685 | if (!stp_online) |
1664 | return -ENODATA; | 1686 | return -ENODATA; |
@@ -1667,12 +1689,15 @@ static ssize_t stp_timing_state_show(struct sysdev_class *class, char *buf) | |||
1667 | 1689 | ||
1668 | static SYSDEV_CLASS_ATTR(timing_state, 0400, stp_timing_state_show, NULL); | 1690 | static SYSDEV_CLASS_ATTR(timing_state, 0400, stp_timing_state_show, NULL); |
1669 | 1691 | ||
1670 | static ssize_t stp_online_show(struct sysdev_class *class, char *buf) | 1692 | static ssize_t stp_online_show(struct sysdev_class *class, |
1693 | struct sysdev_class_attribute *attr, | ||
1694 | char *buf) | ||
1671 | { | 1695 | { |
1672 | return sprintf(buf, "%i\n", stp_online); | 1696 | return sprintf(buf, "%i\n", stp_online); |
1673 | } | 1697 | } |
1674 | 1698 | ||
1675 | static ssize_t stp_online_store(struct sysdev_class *class, | 1699 | static ssize_t stp_online_store(struct sysdev_class *class, |
1700 | struct sysdev_class_attribute *attr, | ||
1676 | const char *buf, size_t count) | 1701 | const char *buf, size_t count) |
1677 | { | 1702 | { |
1678 | unsigned int value; | 1703 | unsigned int value; |