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. 说明 根据内核文档整理而成,具体格式含义可查看内核文档,或点击如何获得正确的printk格式占位符(v6.6)或如何获得正确的printk格式占位符(latest)查看。 linux-6.6相关内核文档路径如下: Documentation/core-api/printk-formats.rst Documentation/translations/zh_CN/core-api/printk-formats.rst 2. 整数类型 内核的printk不支持%n,也不支持浮点格式(%e / %f / %g / %a)。在printk中使用任何不支持的占位符或长度限定符都会导致一个WARN并且终止vsnprintf()执行。注...
1. 串口发送sysrq 对于串口来说,sysrq本质是一个低电平脉冲,通常为100ms。 1在通用异步收发传输器(UART)中,Line Status Register(LSR)的 “Break interrupt indicator”(中断指示位)表示检测到了一个间断信号。 2一、含义 3当该位被置位时,表明 UART 接收器检测到了一个间断条件。一个间断通常是指接收线路上长时间保持为低电平状态,通常超过一个字符传输的时间。这可能是由于外部设备故意发送一个间断信号,或者由于通信线路上的异常情况导致的。 4二、用途 5信号异常检测:可以用来检测通信线路上的异常情况。例如,如果通信双方在一段时间内没有数据传输,然后突然检测到一个间...
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
1. 打开dynamic_debug 1CONFIG_DYNAMIC_DEBUG=y 运行时控制:/proc/dynamic_debug/control,如果开启了CONFIG_DEBUG_FS,在<debugfs>/dynamic_debug/control,两者效果是相同的。 2. 使用dynamic_debug 可以使用pr_debug或者dev_dbg来打印调试信息。 1#define pr_fmt(fmt) fmt 2 3#include <linux/kernel.h> 4#include <linux/init.h> 5#include <linux/module.h> 6 7static int __init...
idle/fair/rt/dl/stop sched_class成员值汇总