SIMPLE_DEV_PM_OPS宏
来源:互联网 发布:算法基础vb 编辑:程序博客网 时间:2024/06/14 04:09
pm.h有一个宏SIMPLE_DEV_PM_OPS:
#define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \const struct dev_pm_ops name = { \SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \}
再看SET_SYSTEM_SLEEP_PM_OPS和dev_pm_ops的定义:
#define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \.suspend = suspend_fn, \.resume = resume_fn, \.freeze = suspend_fn, \.thaw = resume_fn, \.poweroff = suspend_fn, \.restore = resume_fn,struct dev_pm_ops {int (*prepare)(struct device *dev);void (*complete)(struct device *dev);int (*suspend)(struct device *dev);int (*resume)(struct device *dev);int (*freeze)(struct device *dev);int (*thaw)(struct device *dev);int (*poweroff)(struct device *dev);int (*restore)(struct device *dev);int (*suspend_noirq)(struct device *dev);int (*resume_noirq)(struct device *dev);int (*freeze_noirq)(struct device *dev);int (*thaw_noirq)(struct device *dev);int (*poweroff_noirq)(struct device *dev);int (*restore_noirq)(struct device *dev);int (*runtime_suspend)(struct device *dev);int (*runtime_resume)(struct device *dev);int (*runtime_idle)(struct device *dev);};struct platform_driver中的driver成员也有一个dev_pm_ops
struct platform_driver {int (*probe)(struct platform_device *);int (*remove)(struct platform_device *);void (*shutdown)(struct platform_device *);int (*suspend)(struct platform_device *, pm_message_t state);int (*resume)(struct platform_device *);struct device_driver driver;const struct platform_device_id *id_table;};struct device_driver {const char*name;struct bus_type*bus;struct module*owner;const char*mod_name;/* used for built-in modules */bool suppress_bind_attrs;/* disables bind/unbind via sysfs */const struct of_device_id*of_match_table;int (*probe) (struct device *dev);int (*remove) (struct device *dev);void (*shutdown) (struct device *dev);int (*suspend) (struct device *dev, pm_message_t state);int (*resume) (struct device *dev);const struct attribute_group **groups;const struct dev_pm_ops *pm;struct driver_private *p;};那么可以将宏SIMPLE_DEV_PM_OPS使用到struct platform_driver定义中,例如gpio-keys.c中:
static SIMPLE_DEV_PM_OPS(gpio_keys_pm_ops, gpio_keys_suspend, gpio_keys_resume);static struct platform_driver gpio_keys_device_driver = {.probe= gpio_keys_probe,.remove= __devexit_p(gpio_keys_remove),.driver= {.name= "gpio-keys",.owner= THIS_MODULE,.pm= &gpio_keys_pm_ops,.of_match_table = gpio_keys_of_match,}};
0 0
- SIMPLE_DEV_PM_OPS宏
- SIMPLE_DEV_PM_OPS宏
- 通过SIMPLE_DEV_PM_OPS定义suspend和resume函数
- 宏
- 宏
- ##宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 在线书籍收集
- Java WebService 简单实例
- iOS小常识 解决设置setBarTintColor颜色变色
- POJ-2689-Prime Distance(筛法)
- svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
- SIMPLE_DEV_PM_OPS宏
- 针对苹果iOS最新审核要求为应用兼容IPv6
- c++第四次上机实验
- Leetcode题解14 84. Largest Rectangle in Histogram(hard)
- 折半插入排序
- Windows 计算程序运行时间(高精度计时)
- JAVA语言之全排列的递归实现
- 获取对象的接口信息(方法/属性/事件)(VB6代码)
- maven命令速查(自用)