PM: core: Add EXPORT[_GPL]_SIMPLE_DEV_PM_OPS macros
authorPaul Cercueil <paul@crapouillou.net>
Fri, 7 Jan 2022 18:17:20 +0000 (18:17 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 12 Jan 2022 18:59:05 +0000 (19:59 +0100)
commit0ae101fdd3297b7165755340e05386f1e1379709
tree780ca14a3f33d0716deba91ac4a46cc7706806d3
parent52cc1d7f9786d2be44a3ab9b5b48416a7618e713
PM: core: Add EXPORT[_GPL]_SIMPLE_DEV_PM_OPS macros

These macros are defined conditionally, according to CONFIG_PM:
- if CONFIG_PM is enabled, these macros resolve to
  DEFINE_SIMPLE_DEV_PM_OPS(), and the dev_pm_ops symbol will be
  exported.

- if CONFIG_PM is disabled, these macros will result in a dummy static
  dev_pm_ops to be created with the __maybe_unused flag. The dev_pm_ops
  will then be discarded by the compiler, along with the provided
  callback functions if they are not used anywhere else.

In the second case, the symbol is not exported, which should be
perfectly fine - users of the symbol should all use the pm_ptr() or
pm_sleep_ptr() macro, so the dev_pm_ops marked as "extern" in the
client's code will never be accessed.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
include/linux/pm.h