1. 数据结构简介 内核版本:linux-6.1 内核文档:Everything you never wanted to know about kobjects, ksets, and ktypes — The Linux Kernel documentation 在Linux内核中,kobject、kset和kobj_type是用于管理和表示kobject的数据结构。kobject是设备驱动模型的基石,sysfs和uevent也与kobject密切相关。 1.1. kobject struct kobject表示一个对象,包含了一些基本属性,通常会内嵌在其他结构体中来表示不同的实例。每个kobject都会在sysfs中呈现出一个...
timekeeping
1. kmalloc分配内存的大小 本文基于linux-5.15分析,linux-6.6已经删除slob,后续也会将slab移除。 kmalloc会根据申请的内存大小来决定来决定使用块分配器(slab/slub/slob)或页分配器进行内存分配。 控制kmalloc分配行为的主要有如下三个宏。 macro desc KMALLOC_MAX_SIZE kmalloc可以分配的最大内存,超过此大小时返回NULL KMALLOC_MAX_CACHE_SIZE kmalloc使用slab分配器分配的最大内存,超过此大小后会通过伙伴系统分配页 KMALLOC_MIN_SIZE kmalloc可以分配的最小内存,小于此大小时,kmalloc内...
1. thermal简介 thermal子系统主要用来监测和调节CPU、GPU等芯片或设备的温度。三个主要结构体的关系:从thermal_zone_device获取温度后,根据governor指定的策略,来控制thermal_cooling_device进行温度调节。 结构体 描述 举例 struct thermal_zone_device 对温度调节域的抽象,包含配置信息和传感器信息 NTC、Temperature Sensor ADC(TSADC) struct thermal_cooling_device 用于冷却的设备 CPU、GPU、风扇 struct thermal_governor...
1. thermal简介 内核版本:linux-6.1 thermal子系统主要用来监测和调节CPU、GPU等芯片或设备的温度。三个主要结构体的关系:从thermal_zone_device获取温度后,根据governor指定的策略,来控制thermal_cooling_device进行温度调节。 结构体 描述 举例 struct thermal_zone_device 对温度调节域的抽象,包含配置信息和传感器信息 NTC、Temperature Sensor ADC(TSADC) struct thermal_cooling_device 用于冷却的设备 CPU、GPU、风扇 struct thermal_governor 温度...
ERR_PTR、PTR_ERR
idle/fair/rt/dl/stop sched_class成员值汇总
时钟类型、时间子系统简介
sequenceDiagram participant caller as caller participant irq as irq.c participant irqdomain as irqdomain.c participant irqdesc as irqdesc.c participant bitmap as bitmap.c activate caller caller ->> irq: irq_of_parse_and_map activate irq Note right of irq: irq_of_parse_and_map irq ->> irq: of_irq_parse_one irq ->>...
1. 总览 如下为内核开发或驱动开发常见的内存管理API关系,其他如CMA分配器等相关API未列出。 1.1. 框架图 1.2. 函数图总览 2. memblock分配器 memblock分配器主要用于Linux启动时的内存分配,被memblock_alloc分配后未被释放的内存,不会被加入到页管理器中。 api param desc memblock_alloc size, align size表示要申请的大小,align表示内存对齐大小 3. 页分配器 页分配器相关的函数或宏在include/linux/gfp.h中声明。常用的函数如下: return api param unsigned long...