PM: Convert PM notifiers to out-of-line code
This patch (as1008b) converts the PM notifier routines from inline calls to out-of-line code. It also prevents pm_chain_head from being created when CONFIG_PM_SLEEP isn't enabled, and EXPORTs the notifier registration and unregistration routines. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Родитель
90dda1cb6a
Коммит
8252575693
|
@ -213,17 +213,8 @@ void save_processor_state(void);
|
|||
void restore_processor_state(void);
|
||||
|
||||
/* kernel/power/main.c */
|
||||
extern struct blocking_notifier_head pm_chain_head;
|
||||
|
||||
static inline int register_pm_notifier(struct notifier_block *nb)
|
||||
{
|
||||
return blocking_notifier_chain_register(&pm_chain_head, nb);
|
||||
}
|
||||
|
||||
static inline int unregister_pm_notifier(struct notifier_block *nb)
|
||||
{
|
||||
return blocking_notifier_chain_unregister(&pm_chain_head, nb);
|
||||
}
|
||||
extern int register_pm_notifier(struct notifier_block *nb);
|
||||
extern int unregister_pm_notifier(struct notifier_block *nb);
|
||||
|
||||
#define pm_notifier(fn, pri) { \
|
||||
static struct notifier_block fn##_nb = \
|
||||
|
|
|
@ -24,13 +24,37 @@
|
|||
|
||||
#include "power.h"
|
||||
|
||||
BLOCKING_NOTIFIER_HEAD(pm_chain_head);
|
||||
|
||||
DEFINE_MUTEX(pm_mutex);
|
||||
|
||||
unsigned int pm_flags;
|
||||
EXPORT_SYMBOL(pm_flags);
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
|
||||
/* Routines for PM-transition notifications */
|
||||
|
||||
static BLOCKING_NOTIFIER_HEAD(pm_chain_head);
|
||||
|
||||
int register_pm_notifier(struct notifier_block *nb)
|
||||
{
|
||||
return blocking_notifier_chain_register(&pm_chain_head, nb);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(register_pm_notifier);
|
||||
|
||||
int unregister_pm_notifier(struct notifier_block *nb)
|
||||
{
|
||||
return blocking_notifier_chain_unregister(&pm_chain_head, nb);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(unregister_pm_notifier);
|
||||
|
||||
int pm_notifier_call_chain(unsigned long val)
|
||||
{
|
||||
return (blocking_notifier_call_chain(&pm_chain_head, val, NULL)
|
||||
== NOTIFY_BAD) ? -EINVAL : 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
||||
#ifdef CONFIG_PM_DEBUG
|
||||
int pm_test_level = TEST_NONE;
|
||||
|
||||
|
|
|
@ -172,14 +172,10 @@ static inline int suspend_devices_and_enter(suspend_state_t state)
|
|||
}
|
||||
#endif /* !CONFIG_SUSPEND */
|
||||
|
||||
/* kernel/power/common.c */
|
||||
extern struct blocking_notifier_head pm_chain_head;
|
||||
|
||||
static inline int pm_notifier_call_chain(unsigned long val)
|
||||
{
|
||||
return (blocking_notifier_call_chain(&pm_chain_head, val, NULL)
|
||||
== NOTIFY_BAD) ? -EINVAL : 0;
|
||||
}
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
/* kernel/power/main.c */
|
||||
extern int pm_notifier_call_chain(unsigned long val);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
unsigned int count_highmem_pages(void);
|
||||
|
|
Загрузка…
Ссылка в новой задаче