面对在火热移动处理器市场的前提下,众多处理器都亟待加入到空闲状态下进行功耗管理,这时候linux系统就需要一套通用的架构来管理这些cpu,这就是本文的标题: Linux Cpuidle Framework...Linux Cpuidle Framework cpuidle的代码位于: kernel/drivers/cpuidle下,以下是使用tree命令查看此目录下的结构 root@test:~/test/...linux使用cpuidle_state结构用来表示各个idle状态。...linux使用cpuidle_driver结构来表示cpuidle的驱动。...如果设置,则告诉timer framework,启动一个broadcast timer。
那么,linux kernel的regulator framework到底要做什么呢?...这就是本文的目的:弄清楚regulator framework背后思考,并总结出其软件架构(和common clock framework类似,consumer/provider/core)。...背后的思考 Linux regulator framework的目的很直接:提供标准的内核接口,控制系统的voltage/current regulators,并提供相应的机制,在系统运行的过程中,动态改变...4.1 consumer模块向内核空间consumer提供的接口 regulator framework向内核空间consumer提供的接口位于“include/linux/regulator/consumer.h...4.4 driver模块向regulator driver提供的接口 regulator framework向regulator driver提供的接口位于“include/linux/regulator
如果一个系统只有一个regulator,而且只对一个设备控制的话,完全没必要使用linux regulator framework机制。...但是如果一个系统几个甚至十几个regulator,每个regulator之间还存在级连关系,这时候就需要Linux regulator framework。 2....如果一个regulator控制多个设备,而每个设备的电压或电流需求方式不同,linux regulator framework会怎么管理这些设备? 3....Linux Regulator Framework 1. Linux Regulator Framework设计出主要是提供一个标准的内核接口来控制电压和电流调节器。...Linux Regulator Framework分为四个部分,分别是machine,regulator,consumer,sys-class-regulator。
#include #include #include #include ...#include #include #include <linux/regulator/machine.h...所以必须实现一个consumer设备,代码如下: #include #include #include #...include #include #include static
因此,蜗蜗会将clock framework的分析文章分为3篇: 第一篇为概述和通用API的使用说明,面向的读者是使用clock的driver开发者,目的是掌握怎么使用clock framework(就是本文...); 第二篇为底层操作函数集的解析和使用说明,面向的读者是platform clock driver的开发者,目的是掌握怎么借助clock framework管理系统的时钟资源; 第三篇为clock framework...的内部逻辑解析,面向的读者是linux kernel爱好者,目的是理解怎么实现clock framework。...概述 如今,可运行Linux的主流处理器平台,都有非常复杂的clock tree,我们随便拿一个处理器的spec,查看clock相关的章节,一定会有一个非常庞大和复杂的树状图,这个图由clock相关的器件...clock framework提供的通用API 管理clock的最终目的,是让device driver可以方便的使用,这些是通过include/linux/clk.h中的通用API实现的,如下: 1
前言 通常新机制/事物的出现往往是解决某些问题的,同样wakeup events framework机制也不例外。...先带大家了解下wakeup events framework出现的背景,然后在了解其内部的实现机制。...Linux系统中的电源管理一般是冷睡眠,而Android系统却将linux系统中的睡眠作为通常待机使用,显然Linux中的电源管理不符合Android系统。...所以Linux在2.6.36中引入了wakeup events framework机制,用来解决suspend和wakeup events之间的同步问题。...在wakeup events framework中重要的数据结构就是wakeup_source,字面意思就是产生wakeup events的设备。
前言 本文从regulator driver的角度,描述怎样基于regulator framework编写regulator驱动。...4)后面的事情,例如sysfs attribute创建等,就交给regulator framework core了。 3....DTS相关的实现逻辑 3.1 DTS的内容 回忆一下“Linux Regulator Framework(1)_概述”中介绍的machine的主要功能:使用软件语言(struct regulator_init_data...下面是operation mode定义(位于include/linux/regulator/consumer.h中): 1: /* 2: * Regulator operating modes...5.5 regulator framework提供的sysfs接口 根据regulator提供的ops情况,regulator framework可以通过sysfs提供多种attribute,它们位于/
前言 本文继续“Linux电源管理(6)_Generic PM之Suspend功能”中有关suspend同步以及PM wakeup的话题。...这个话题,是近几年Linux kernel最具争议的话题之一,在国外Linux开发论坛,经常可以看到围绕该话题的辩论。辩论的时间跨度和空间跨度可以持续很长,且无法达成一致。...但是,在当前这个时间点,对这个话题,Linux kernel developers和Android developers持相反的观点。...4. wakeup events framework architecture 下面图片描述了wakeup events framework的architecture: ?...注3:在Linux kernel看来,power是系统的核心资源,不应开放给用户程序随意访问(wake lock机制违背了这个原则)。
2. clock有关的DTS 我们在“Linux common clock framework(1)_概述”中讲述clock consumer怎么使用clock时,提到过clock consumer怎么在...方式2,每一个可输出clock的器件,如“Linux common clock framework(1)_概述”所提及的Oscillator、PLL、Mux等等,都是一个设备,用一个DTS node表示...= ”; clock-names,为clocks指定的那些clock分配一些易于使用的名字,driver可以直接以名字为参数,get clock的句柄(具体可参考“Linux...3.clock provider有关的API汇整 clock provider的API位于include/linux/clk_provider.h。...3.1 struct clk_hw 由“Linux common clock framework(1)_概述”可知,clock framework使用struct clk结构抽象clock,但该结构对clock
概述 因为工作关系,最近有涉及到ADF(Atomic Display Framework)相关的内容,部分内容来自互联网 ADF(Atomic Display Framework)是Google新增的Display
前言 前面两篇clock framework的分析文章,分别从clock consumer和clock provider的角度,介绍了Linux kernel怎么管理系统的clock资源,以及device...本文将深入到clock framework的内部,分析相关的实现逻辑。 注:本文使用的kernel版本为linux-3.10.29。...clock regitser/unregister 在“Linux common clock framework(2)_clock provider”中已经讲过,clock provider需要将系统的...这恰恰呼应了“Linux common clock framework”中“common”一词。...of_clk_get_by_name 我们在“Linux common clock framework(2)_clock provider”中已经提过,clock consumer会在本设备的DTS中,
前言 回顾上一篇文章(Linux PM QoS framework(1)_概述和软件架构),PM QoS framework抽象出4个系统级别的QoS constraint(统称为PM QoS class...pm qos class的定义如下: 1: /* include/linux/pm_qos.h */ 2: enum { 3: PM_QOS_RESERVED = 0,...对per-device PM QoS framework而言,则需要利用它们实现自身的功能。...这些接口就是提供给per-device PM QoS framework的low level接口,后面再详细介绍。...当调用pm_qos_get_value接口时,framework会更具qos type,从list head中,取最小值、最大值或者所有值的和。
前言 也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中?...那么问题来了,Linux kernel怎么支持这种框架呢?...kernel中,借助cpufreq framework,来实现上面的功能。...此时所有的big、Little core对系统都可见,每个core都可以基于cpufreq framework调整频率。...有关cpufreq driver以及cpufreq_register_driver的描述可参考“Linux cpufreq framework(2)_cpufreq driver”。
在Linux kernel中,这种CPU的无所事事的状态,被称作idle状态,而cpuidle framework,就是为了管理这种状态。...软件架构 Linux kernel中,cpuidle framework位于“drivers/cpuidle”文件夹中,包含cpuidle core、cpuidle governors和cpuidle...软件流程 在阅读本章之前,还请读者先阅读如下三篇文章: Linux cpuidle framework(2)_cpuidle core Linux cpuidle framework(3)_ARM64...generic CPU idle driver Linux cpuidle framework(4)_menu governor 前面提到过,kernel会在系统启动完成后,在init进程(或线程)中,...同时也间接证实了“Linux cpuidle framework(4)_menu governor”中所提及的,为什么menu governor在reflect接口中只是简单的置一个标志。
/configure --prefix=/usr/local/python27 checking build system type... x86_64-unknown-linux-gnu checking...host system type... x86_64-unknown-linux-gnu checking for --enable-universalsdk... no checking for -...-with-universal-archs... 32-bit checking MACHDEP... linux2 checking EXTRAPLATDIR... checking for --without-gcc...]# python setup.py install …… 查看是否安装成功 [root@localhost robotframework-2.9]# pybot --version Robot Framework...2.9 (Python 2.6.6 on linux2) [root@localhost robotframework-2.9]# 参考连接: http://robotframework.org/
前言 QOS为Quality Of Service(服务质量)的简称,对PM QoS而言,表示Linux kernel电源管理相关的服务质量。那到底什么是服务质量呢?...我们知道,Linux PM的主要功能,是节省功耗,但同时,会付出一定的性能代价,例如延迟(latency)增加、吞吐量(throughput)下降。...不过,PM QoS framework的存在,并不是为了定义并测量系统的服务质量(Linux系统对实际的qos没有任何兴趣),而是为了定义一套框架,以满足系统各个实体(如进程、设备驱动等等)对QoS的期望为终极目标...软件架构 根据上面2类constraint,Linux kernel提供了2个不同的QoS framework: 一个是系统级别的,用于cpu&dma latency、network latency、network...Common header位于include/linux/pm_qos.h中,负责通用数据结构的抽象、函数声明等工作。
实现方式 Aop的实现方式,大体是分为两个版本一个是不同框架下的实现方式,不同平台就是Framework下面的实现方式,还有一种是Core下面的实现方式,这里我们主要讲这两种,第二个实现方式下面是两个通用的实现方式...,一种是基于IL的形式去实现,还有一种是基于内存的形式的实现,这里不太对这两种进行过多的讲解,后续会写一个使用IL去实现AOP的代码,这里主要讲FrameWork和Core框架下如何实现AOP代理的两种比较简单的方法...frameWork 在framework的框架下,可以使用RealProxy类来实现静态代理的的aop,需要自己去继承RealProxy这个类,然后实现Invoke的抽象方法,即可实现Aop...同样的,在RealProxy中我们可以记录日志,异常,执行前,执行后等操作,在这个Invoke里面,我们同样可以,这便是我在FrameWork以及Core中实现Aop的两种方式。
前言 per-device PM QoS是针对指定设备的QoS framework,背后的思考如下: 1)resume_latency 在Runtime PM的框架下,当device的引用计数减为0的时候...per-device PM QoS framework会提供相应的接口,收集指定设备的resume_latency request,并提供给Runtime PM,它在suspend设备时,会考虑这种需求...因此,per-device PM QoS framework的功能,就是抽象上面两类需求,包括:向requestor提供QoS request的add、update、remove等API,包括内核空间API...和用户空间API;汇整、整理这些request;向电源管理有关的service(主要是pm domain framework)提供汇整后的request信息,以便这些service可以做出正确的决定。...struct pm_qos_constraints为pm qos要求的具体抽象,可参考“Linux PM QoS framework(2)_PM QoS class”中的描述; latency_tolerance
Windows Mobile--2.硬件和软件设计和ZigBee On Windows Mobile--3.模拟器和实物调试等),今天在Michael的Blog上发现他已经将ZigBee在.NET Framework...和 Micro Framework平台上实现了,并且作为开源项目,在codeplex上提供源代码下载。 ...Michael是在.NET Framework3.5上写的ZigBee Console,主要的工作还是放在XBee模块的协议处理上,即数据报的发送、接收。...希望对在.NET Framework 和 Micro Framework平台做ZigBee处理的朋友有用。
Openstack社区一直没有专门的VM HA的组件来支持VM HA,所以各个厂商有这个需要都自己开发。
领取专属 10元无门槛券
手把手带您无忧上云