From a1d9207003cc304ebdf8f34c1567ff811dcd284b Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Fri, 17 Aug 2012 22:06:59 +0800 Subject: [PATCH] --- yaml --- r: 324384 b: refs/heads/master c: dfe3212e0196c01402154971841463d721dea915 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/base/power/main.c | 22 ++++++++++++++++++++++ trunk/include/linux/pm.h | 5 +++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f7f97b067d60..f77a1bfc4cce 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c08f67730aba342b03f070209acc2990d3decf3c +refs/heads/master: dfe3212e0196c01402154971841463d721dea915 diff --git a/trunk/drivers/base/power/main.c b/trunk/drivers/base/power/main.c index 0113adc310dc..b0b072a88f5f 100644 --- a/trunk/drivers/base/power/main.c +++ b/trunk/drivers/base/power/main.c @@ -1324,3 +1324,25 @@ int device_pm_wait_for_dev(struct device *subordinate, struct device *dev) return async_error; } EXPORT_SYMBOL_GPL(device_pm_wait_for_dev); + +/** + * dpm_for_each_dev - device iterator. + * @data: data for the callback. + * @fn: function to be called for each device. + * + * Iterate over devices in dpm_list, and call @fn for each device, + * passing it @data. + */ +void dpm_for_each_dev(void *data, void (*fn)(struct device *, void *)) +{ + struct device *dev; + + if (!fn) + return; + + device_pm_lock(); + list_for_each_entry(dev, &dpm_list, power.entry) + fn(dev, data); + device_pm_unlock(); +} +EXPORT_SYMBOL_GPL(dpm_for_each_dev); diff --git a/trunk/include/linux/pm.h b/trunk/include/linux/pm.h index f067e60a3832..88f034a23f2c 100644 --- a/trunk/include/linux/pm.h +++ b/trunk/include/linux/pm.h @@ -638,6 +638,7 @@ extern void __suspend_report_result(const char *function, void *fn, int ret); } while (0) extern int device_pm_wait_for_dev(struct device *sub, struct device *dev); +extern void dpm_for_each_dev(void *data, void (*fn)(struct device *, void *)); extern int pm_generic_prepare(struct device *dev); extern int pm_generic_suspend_late(struct device *dev); @@ -677,6 +678,10 @@ static inline int device_pm_wait_for_dev(struct device *a, struct device *b) return 0; } +static inline void dpm_for_each_dev(void *data, void (*fn)(struct device *, void *)) +{ +} + #define pm_generic_prepare NULL #define pm_generic_suspend NULL #define pm_generic_resume NULL