diff options
author | Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 2009-09-15 08:57:04 -0400 |
---|---|---|
committer | Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 2009-11-06 06:12:24 -0500 |
commit | 1c889f4db6b2f8f8429e62011ba622642faba019 (patch) | |
tree | 995e43f46f37925556b74b324e59d7363f9393be /net | |
parent | 69d9ab96f983720b7794e91437bd9c5f83bae9f7 (diff) |
wpan-phy: add wpan-phy iteration functions
Add API to iterate over the wpan-phy instances.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/ieee802154/wpan-class.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/net/ieee802154/wpan-class.c b/net/ieee802154/wpan-class.c index f306604da67a..0cec13842916 100644 --- a/net/ieee802154/wpan-class.c +++ b/net/ieee802154/wpan-class.c | |||
@@ -91,6 +91,31 @@ struct wpan_phy *wpan_phy_find(const char *str) | |||
91 | } | 91 | } |
92 | EXPORT_SYMBOL(wpan_phy_find); | 92 | EXPORT_SYMBOL(wpan_phy_find); |
93 | 93 | ||
94 | struct wpan_phy_iter_data { | ||
95 | int (*fn)(struct wpan_phy *phy, void *data); | ||
96 | void *data; | ||
97 | }; | ||
98 | |||
99 | static int wpan_phy_iter(struct device *dev, void *_data) | ||
100 | { | ||
101 | struct wpan_phy_iter_data *wpid = _data; | ||
102 | struct wpan_phy *phy = container_of(dev, struct wpan_phy, dev); | ||
103 | return wpid->fn(phy, wpid->data); | ||
104 | } | ||
105 | |||
106 | int wpan_phy_for_each(int (*fn)(struct wpan_phy *phy, void *data), | ||
107 | void *data) | ||
108 | { | ||
109 | struct wpan_phy_iter_data wpid = { | ||
110 | .fn = fn, | ||
111 | .data = data, | ||
112 | }; | ||
113 | |||
114 | return class_for_each_device(&wpan_phy_class, NULL, | ||
115 | &wpid, wpan_phy_iter); | ||
116 | } | ||
117 | EXPORT_SYMBOL(wpan_phy_for_each); | ||
118 | |||
94 | static int wpan_phy_idx_valid(int idx) | 119 | static int wpan_phy_idx_valid(int idx) |
95 | { | 120 | { |
96 | return idx >= 0; | 121 | return idx >= 0; |