|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 586|回復: 0
打印 上一主題 下一主題

linux/Documentation目录下的pm.txt

[複製鏈接]

86

主題

3

好友

542

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情
    開心
    2024-5-9 21:05
  • 簽到天數: 1593 天

    [LV.Master]伴壇終老

    推廣值
    0
    貢獻值
    0
    金錢
    7167
    威望
    542
    主題
    86
    樓主
    發表於 2014-11-15 20:37:15
    Linux的电源管理支持
    本文件简要介绍了如何使用您的电源管理
    Linux系统以及如何添加电源管理的支持Linux的驱动程序。
    APM或ACPI?
    ------------
    如果你有一个比较新的x86移动,桌面或服务器系统,
    它支持的可能是高级电源管理(APM)或
    高级配置和电源接口(ACPI)。 ACPI是这两种技术的电源管理中较新的一种,
    并提出在操作系统手中
    ,比使用BIOS控制的APM 可以提供更大的灵活性以及可扩展性。
    最好的方法来确定,如果不是,你的系统支持,是
    建立既符合ACPI和APM内核为2.3.x启用ACPI的(是
    默认启用)。如果ACPI可以work,
    ACPI驱动程序将覆盖和禁用APM,否则APM驱动
    将被使用。
    不要抱怨,你不能同时启用和运行ACPI和APM 。
    碎ACPI或损坏,有些人
    想得到了一套完整的工作特性,但您
    根本无法混合和匹配两者。机器一次控制的只有一个电源管理接口。想想看..
    用户空间守护进程
    ------------------
    APM和ACPI都依赖于用户空间的守护进程,apmd和工具acpid
    分别要完全发挥作用。从你的Linux发行版或从Internet(见下文) 获得这两项守护进程
    并确保他们在系统启动过程的某个时候 开始。
    继续并启动这两个。如果ACPI或APM在你的系统上是不可用的,
    相关的守护进程将退出。
      apmd:
    http://worldvisions.ca/
    〜apenwarr / apmd /
      工具acpid:
    http://acpid.sf.net/

    驱动程序接口 - 废弃,请勿使用!
    ----------------*************************
    注:pm_register(),pm_access(),pm_dev_idle()和friends废弃。
    请不要使用它们。相反,你应该适当挂钩
    您的驱动程序到驱动程序模型,并使用它的suspend()/resume()
    回调做这种东西。
    如果你正在编写一个新的驱动程序或维持旧驱动程序,它
    应包括电源管理支持。如果没有电源管理
    支持,单一驱动程序可能 阻止具有电源管理功能的系统
    使之不能suspend(安全)。
    概述:
    1)用“pm_register”  注册的每一个设备实例
    2)在访问硬件之前 调用“pm_access”。
       (这将确保该硬件是awake和ready)
    3)在进入挂起suspend状态(ACPI的D1-D3)前  或在从挂起到恢复resuming(ACPI的D0)
       你的“pm_callback”被调用。
    4)当设备不被使用 调用“pm_dev_idle”
       (可选,但将改进闲置设备检测)
    5)当卸载,用“pm_unregister”注销设备
    / *
    *说明:用电源管理子系统 注册设备
    *
    *参数:
    *类型 - 设备类型(PCI设备,系统设备,...)
    *身份证 - 例号或唯一标识符
    * cback - 请求处理回调(suspend, resume,...)
    *
    *返回:在error注册 PM装置或NULL
    *
    *例子:
    * dev= pm_register(PM_SYS_DEV,PM_SYS_VGA,vga_callback);
    *
    *   struct pci_dev *pci_dev = pci_find_dev(...);
    *   dev = pm_register(PM_PCI_DEV, PM_PCI_ID(pci_dev), callback);
    * /
    struct pm_dev *pm_register(pm_dev_t type, unsigned long id, pm_callback cback);
    / *
    *说明:用电源管理子系统 注销设备
    *
    *参数:
    * dev - 从pm_register 返回的设备
    * /
    void pm_unregister(struct pm_dev *dev);
    / *
    *说明:注销与回调函数匹配的所有设备
    *
    *参数:
    * cback - 之前注册的request callback
    *
    *注:从旧的APM接口提供更容易的移植
    * /
    void pm_unregister_all(pm_callback cback);
    / *
    *电源管理的request callback
    *
    *参数:
    * dev - 从pm_register之前返回的设备
    * rqst - 请求类型
    *data - 数据,如果有的话,与请求相关联的
    *
    *返回:如果请求是成功的,0
    * EINVAL  如果不支持请求
    * EBUSY   如果该设备正在忙,无法处理请求
    * ENOMEM  如果设备由于内存无法处理请求
    *
    *详细内容:该设备请求回调将提交要求
    *设备/系统进入挂起状态(ACPI的D1的维生素D3)或
    *或之后的设备/系统恢复从挂起(ACPI的D0)用来。
    *对于PM_SUSPEND,在ACPIḎ国家正在通过签订
    *为“数据”参数回调。该设备
    *司机应保存(PM_SUSPEND)或恢复(PM_RESUME)
    *设备上下文请求时,被称为回调。
    *
    *一旦驱动程序从suspend request返回0(成功)
    *,它不应该处理任何进一步要求
    *或访问硬件直到产生一个对“pm_access”的调用。
    * /
    typedef int (*pm_callback)(struct pm_dev *dev, pm_request_t rqst, void *data);
    驱动程序详细信息
    --------------
    这仅仅是一个快速问答,直到一个真正的驱动作者
    为电源管理提供指导。
    问:是一个设备暂停? When is a device suspended?
    设备可以暂停基于直接用户的要求(如:笔记本电脑盖子
    关闭),系统功耗的政策(如睡眠控制台后30分钟
    活动),或设备的电力政策(如断电后设备5
    分钟的活动)
    问:司机必须荣誉挂起的请求? Must a driver honor a suspend request?
    没有,驱动程序可以返回从挂起的请求并EBUSY本
    将停止吊销制度。当一个请求暂停
    失败了,所有的设备都暂停,恢复和系统继续
    运行。暂停试可以在以后的时间。
    问:驱动程序块暂停/恢复的要求呢? Can the driver block suspend/resume requests?
    是的,司机可以推迟从挂起或恢复回报
    请求,直到该设备已准备好处理请求。它
    有利于返回从尽快
    要求为暂停/恢复连续完成。
    问:什么情况下挂起/恢复启动的?
    阿暂停或恢复启动的内核线程上下文。
    它是安全的块,分配内存,发起请求
    或其他任何你可以在内核。
    问:请继续暂停后到达?
    有可能。这是司机的责任要排队(*),
    失败,或丢弃任何要求回国后到达
    成功的请求暂停。重要的是,在
    驱动程序不能访问其设备,直到收到后
    作为该设备的总线请求恢复可能不再
    是活动的。
    (*)如果一个驱动程序请求队列后处理
        简历都知道,设备,网络等
        可能在不同的状态比在暂停时间。
        它可能会更好下降请求,除非
        司机是一个存储设备。
    问:我有管理的巴士专用电源管理寄存器
    不,这是公交车司机的责任管理
    的PCI,USB接口,电源管理等登记。巴士司机
    或电源管理子系统也将启用任何
    唤醒功能,该设备已。
    问:那么,真的,什么我需要做支持暂停/恢复?
    您需要保存的任何设备情况下,将
    如果丢失的设备是断电,然后恢复
    它的恢复时间。当ACPI是积极的,有
    三个层次的设备暂停状态; D1和D2和D3的。
    (挂起状态通过的“数据”的论据
    到设备回调。)与维生素D3,设备供电
    关闭并失去所有方面,D1和D2是浅权力
    国家和需要较少的设备上下文被保存。至
    它的安全性,一切都只是保存在暂停和恢复
    一切都在恢复。
    问:我在哪里可以暂停存储设备上下文?
    无处不在内存中,kmalloc的一个缓冲区或存储它
    在设备描述符。您是保证的
    内存的内容将恢复和可
    前恢复,甚至当系统挂起到磁盘。
    问:我需要做的ACPI与APM的与等?
    驱动程序不需要知道具体的电源管理
    技术处于活动状态。他们只需要知道
    何时覆电源管理系统的要求
    他们暂停或恢复。
    问:有关设备依赖?
    当一个驱动注册一个设备,电源管理
    子系统使用所提供的资料建立
    依赖的设备(如USB设备X上树
    USB控制器辎于PCI总线Z是)当电源
    管理要暂停设备,它首先发送
    一要求暂停其驱动,然后是巴士司机,
    等,到系统总线。设备恢复
    进行相反的方向。
    问:谁做的其他信息我联系
       让我的特定驱动程序的电源管理/设备?
    ACPI的开发邮件列表:
    linux-acpi@vger.kernel.org

    系统接口 - 废弃,请勿使用!
    ----------------*************************
    如果您提供新的电源管理支持的Linux(例如:
    加入像APM或ACPI支持的东西),你应该
    与司机沟通,通过现有的通用动力
    管理界面。
    / *
    *发送请求中的所有设备
    *
    *参数:
    * rqst - 请求类型
    *数据 - 数据,如果有的话,与请求相关联的
    *
    *返回:0如果请求是成功的
    *见“pm_callback的错误”回归
    *
    *详细内容:步行注册设备清单,并呼吁pm_send
    *每个直到完成或遇到错误。
    *如果遇到错误的暂停请求,
    *返回所有的国家,他们是在以前的设备
    *挂起的请求。
    * /
    廉政pm_send_all(pm_request_t rqst,无效*数据);
    / *
    *找到匹配的设备
    *
    *参数:
    *类型 - 设备类型(PCI设备,系统设备,或0到匹配的所有设备)
    *从 - 以前的匹配或NULL从头开始
    *
    *返回:匹配的设备或空,如果没有找到
    * /
    结构pm_dev * pm_find(pm_dev_t类型,从结构pm_dev *);
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-5-29 04:51 , Processed in 0.056979 second(s), 17 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部