Linux内核中的内存管理框架考虑到了各个方面的需求,实现得非常精细。1内核对于内存的管理和使用的整体框架Linux内核的内存管理也要满足内核自身的需要。图4-32展示了Linux内核的内存管理框架。仅有好的页分配器是不能满足内核对于内存管理的需要的,前面已经介绍了,内核有很多频繁使用的数据结构,对于它们最好单独分配空间进行管理,这就形成了SLAB分配器。......
2023-11-22
1ᤫclock控制结构及相关接口
Linux内核中时钟的管理也是经历了时间的演进。早期的时钟管理,Linux内核只是提供了接口的声明,并没有进行接口的定义和实现,相应的声明是在linux/include/linux/clk.h中,这些声明需要体系结构代码进行具体实现,这些声明为框架和具体的实现指明了方向。先来看看这些声明及其具体的意义(保留英文注释,因为解释已经足够详细)。
Linux内核规定了这些接口的形式,特别是时钟的管理结构struct clk也只是进行了声明,它们都需要在体系结构进行具体的定义。从这些声明中可见,体系结构代码需要实现时钟的获得、频率设置、引用计数管理、管理层次的设置等功能。这些功能符合之前对需求的讨论。当然这些接口并不都需要实现。驱动设备的开发者只要调用上面的接口进行相关的操作即可,不必关心具体的实现。
Linux内核这样的设计给各个体系结构很大的自主设计自由,主要是因为包括Intel在内的很多处理器,其相应的时钟树并不复杂。这样只需要进行统一的声明并由体系结构自己实现。(www.chuimin.cn)
2ᤫclock查找和引用计数框架
上面的接口在ARM体系结构中实现了通用的时钟查找和引用计数的框架。具体的实现在arch/arm/common/clkdev.c中。针对时钟查找,ARM体系结构定义了struct clk_lookup来实现。clk_lookup,顾名思义是用来查找struct clk结构的。有了它,就可以通过设备名或时钟的名字来找到相应的struct clk结构。clk_lookup的组织框图如图4-46所示。
图4-46 clk_lookup的组织框图
从图4-46可见,clk_lookup组织成链表,相应的每个节点都会指向一个struct clk。这样就可以通过比对clk_lookup中的dev_id和con_id来找到正确的struct clk了。ARM体系结构中通过clkdev_add将已经定义的clk_lookup加入链表进行管理,相应的需要芯片特定的代码对所有时钟对应的clk_lookup都进行定义。
Linux内核中其他的时钟管理接口是在芯片特殊代码中实现的。
随着SoC的发展以及电源管理的需要,时钟树变得越来越复杂,内核也越来越需要统一时钟管理框架。新的Linux内核选择了芯片厂商ST提供的时钟框架作为通用时钟管理框架(common clock),其中对于时钟查找沿用ARM体系结构的clk_lookup,并进行了些修改,structclk及其他接口都使用ST的实现。common clock框架与TI芯片的时钟管理框架的实现整体上是一致的,所以这里不进行详细介绍,了解了TI芯片的时钟管理框架之后,再看common clock的框架就比较容易理解了。
有关深入剖析Linux内核与设备驱动的文章
Linux内核中的内存管理框架考虑到了各个方面的需求,实现得非常精细。1内核对于内存的管理和使用的整体框架Linux内核的内存管理也要满足内核自身的需要。图4-32展示了Linux内核的内存管理框架。仅有好的页分配器是不能满足内核对于内存管理的需要的,前面已经介绍了,内核有很多频繁使用的数据结构,对于它们最好单独分配空间进行管理,这就形成了SLAB分配器。......
2023-11-22
由于DMA需要访问内存,所以在早期的Linux内核提供的使用和管理框架主要是内存管理的框架,这些框架用于分配和管理DMA要使用的内存资源,规范DMA和CPU访问内存区域的流程。相应的限制会和设备绑定,因为DMA的最终使用者会以物理设备和逻辑设备的形式存在,这样的限制和设备绑定更合理。相应的详细接口如下:5DMA engine框架以上都是和DMA操作的内存管理相关的框架和接口,并没有涉及DMA操作的统一接口和DMA自身资源管理部分。......
2023-11-22
TI芯片时钟管理框架的实现也是分层次的。3不同时钟类型的具体实现由之前的代码和struct clk中可见,操作接口有两种,一种是在struct clkops中表示的,另外一种是直接在struct clk中的,如set_rate等。仔细看struct clkops中的操作接口是和时钟enable和disable相关的,而struct clk中的操作接口是和频率设定相关的。操作接口分析如下:4时钟管理初始化实际的芯片中所有时钟的信息都在clockxxxx_data.c内,DM3730的时钟信息是在clock3xxx_data.c内,其中不仅包含了详细的时钟信息,还包含芯片相关的时钟管理初始化操作。......
2023-11-22
基于以上对清洁生产实施的系统分析,为了保证清洁生产的顺利实施,清洁生产实施管理应该包括以下四个方面。清洁生产实施的目标管理。对于建筑工程来说,虚拟组织、协同系统、供应链管理等都是实现清洁生产的组织管理手段。根据清洁生产的实施属性,评价对象为技术、环境与经济三方面。环境性评价是对清洁生产的实施可能产生的环境绩效的评估;而经济性评价是经济合理性分析,在追求环境绩效的同时要保证一定的经济效益。......
2023-06-20
VFS的实现是以“一切皆是文件”为需求出发点的。要理解VFS的框架首先看一下VFS和系统的静态关系框图,如图5-1所示。从图5-1可见,VFS是用户层的直接接口,是面向用户的服务。图5-1VFS和系统静态关系图在图5-2中每个节点被使用时都会在VFS层中创建dentry,这样可以快速通过文件名进行查找和定位,Linux内核中对dentry的管理组织形式如图5-3所示。以上是系统运行时VFS对文件名的组织管理,这是VFS管理的一个方面。......
2023-11-22
2GPIO内部管理框架GPIO框架的重要数据结构就是gpio_chip,详细内容如下:系统中可以有多个gpio_chip,而每个gpio_chip管理一组GPIO,其中base表示相应的gpio_chip管理的系统中的起始GPIO号,一共管理ngpio个GPIO。内核将所有的GPIO组成数组,每个GPIO用gpio_desc进行描述,具体的结构如下:其中的chip表示该GPIO由哪个gpio_chip进行管理。其中,flags表示该GPIO是否被请求、输入输出状态等与GPIO功能相关的状态及属性。从整体上来说GPIO框架还是简单直接的。......
2023-11-22
相关推荐