可唤醒中断
Android手机处于节省功耗考虑,在没有操作的情况下进入休眠模式,休眠模式下内核和应用层程序都处理冻结状态。对于进入休眠模式的系统,如何配置中断,使系统在中断发生时被唤醒呢?
在驱动代码里,对设备驱动xxx_driver中定义如下:
static struct device_driver xxx_driver = {
.name = “xxx”,
.owner = THIS_MODULE,
.pm = &xxx_pm,
}
其中xxx_pm是一个类型为dev_pm_ops的结构体变量,它用如下宏定义:
static UNIVERSAL_DEV_PM_OPS(xxx_pm, xxx_suspend, xxx_resume, NULL);
#define UNIVERSAL_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn)
const struct dev_pm_ops name = { \
SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
SET_RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
}
#define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
.suspend = suspend_fn, \
.resume = resume_fn