zoukankan      html  css  js  c++  java
  • Linux电源管理研究笔记—acpid工作原理

    Linux电源管理研究笔记—acpid工作原理

     

    转载时请注明出处:http://blog.csdn.net/absurd/

     

    在手持设备设计中,电源管理历来为重要的研究课题之一。我们日常所说的省电就属于电源管理的范畴,这也是我们最关心的一个部分。通过挂起不必要的设备、降低CPU的频率或者其它方法,可以减少能量的消耗,达到省电的目的。电源管理实际上是一个系统工程,从应用程序到内核框架,再到设备驱动和硬件设备,都要参与进来,才能达到电源管理的最优化。本文介绍一下acpid的工作原理。

     

    ACPIAdvanced Configuration and Power Interface缩写,acpid中的d则代表daemonAcpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。

     

    acpid与内核的通信方式:acpidpoll函数挂在/proc/acpi/event文件上。内核在drivers/acpi/event.c中实现了该文件的接口,一旦总线事件列表(acpi_bus_event_list)上有电源管理事件发生,内核就会唤醒挂在 /proc/acpi/event上的acpidacpid再从/proc/acpi/event中读取相应的事件。

     

    acpid与应用程序的通信方式有两种,其一是通过本地socket,其文件名为/var/run/acpid.socket,应用程序只要连接到这个socket上,不用发送任何命令就可以接收到acpid转发的电源管理事件。

     

    其二是通过配置文件。在acpid收到来自内核的电源管理事件时,根据配置文件中的规则执行指定的命令。配置文件在/etc/acpi/events/目录下,下面是一个示例:

    event=button/power.*

    action=/sbin/shutdown -h now

     

    事件的格式为:device_class bus_id type datadevice_classbus_id是字符串,typedata是十六制整数。在配置文件中可以使用通配符,来匹配指定的事件。

     

    ~~end~~

     

     

     

     

     

     

     

  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167812.html
Copyright © 2011-2022 走看看