编写设备驱动程序

电源管理组件

如果在设备处于空闲状态时可以减少设备能耗,则该设备是电源可管理设备。从概念上讲,电源可管理设备由许多电源可管理硬件单元组成,这些硬件单元称为组件

设备驱动程序通知系统有关设备组件及其相关电源级别的信息。因此,在驱动程序初始化期间,驱动程序会在其 attach(9E) 入口点中创建 pm-components(9P) 属性。

大多数电源可管理设备仅实现单个组件。例如,磁盘就是一个电源可管理的单组件设备,当磁盘处于空闲状态时,可以停止磁盘主轴马达以节省电能。

如果一个设备具有多个可单独控制的电源可管理单元,则该设备应实现多个组件。

例如,配有监视器的帧缓存器卡就是一个电源可管理的双组件设备。帧缓存器电子设备是第一个组件 [组件 0]。未使用帧缓存器电子设备时,其能耗将会降低。监视器是第二个组件 [组件 1]。未使用监视器时,监视器也可以进入低能耗模式。系统将帧缓存器电子设备和监视器视为一个由两个组件组成的设备。

多个电源管理组件

对于电源管理框架而言,所有组件均“一视同仁”,并且组件之间完全无关。如果组件状态不完全兼容,则设备驱动程序必须确保不会出现不需要的状态组合。例如,帧缓存器/监视器卡具有以下几种可能状态: D0D1D2D3。与卡连接的监视器具有以下几种可能状态: OnStandbySuspendOff。这些状态并不一定相互兼容。例如,如果监视器处于 On 状态,则帧缓存器必须处于 D0 状态(即完全打开)。如果在帧缓存器处于 D3 状态时,其驱动程序收到一个请求,要求打开监视器电源使监视器处于 On 状态,则在将监视器设置为 On 之前,驱动程序必须调用 pm_raise_power(9F) 才能启动帧缓存器。如果系统在监视器处于 On 状态时请求降低帧缓存器的电能供给,则驱动程序必须拒绝该请求。