Linux 内核常用数据结构
Linux内核中广泛使用多种通用数据结构,其中双向循环链表list_head使用频率最高,哈希链表hlist专为哈希桶设计以减少内存开销,红黑树rbtree提供O(log n)的自平衡搜索,而xarray和radix_tree用于整数到指针的映射(xarray为radix tree的替代品),优先级链表plist用于按优先级处理任务。
smatch
Smatch 是专为 Linux 内核设计的静态分析工具,通过追踪代码执行路径发现空指针解引用、锁错误、资源泄漏等深层 bug。它借助内核编译系统构建数据库,实现跨文件漏洞侦测;支持指定参数进行字节序检查、编译目标及输出文件定制,也可针对特定文件或非内核项目分析,并建议定期更新数据库以提升检查准确度。
查询内核API最早引入版本
查询内核API最早引入版本
Linux LCD
LCD(液晶显示器)通过电场改变液晶分子排列控制光学性质,是常见的显示外设。文章对比了CRT和OLED技术,详细介绍了TFT、TN、IPS、VA、SLCD等面板类型的特点与优劣(IPS色彩最佳、TN响应最快、VA对比度最高),并解释了像素(RGB三原色混合)和分辨率的基本概念。
Linux USB
USB通用串行总线标准自1994年发展至今,速率从1.5Mbps提升至40Gbps,接口从Type-A/B演进到正反插的Type-C,但Type-C接口的实际传输速度取决于所搭载的USB协议版本;USB版本命名历经多次更改,例如USB 3.0现称USB 3.2 Gen 1;设备分为Host和Slave,仅两者连接才能实现数据传输,RK3568处理器内置多个USB2.0、USB3.0及OTG接口。
Linux IIO
IIO是Linux内核中处理ADC、DAC及工业传感器的统一子系统,提供标准化接口、支持多种设备类型和事件触发机制。文章以RK3568的SARADC为例,分析IIO设备注册流程,包括设备树节点匹配、struct iio_dev结构与私有数据绑定、通道规格定义及使用devm_iio_device_register()完成注册。
io_uring
io_uring 是 Linux 5.1 引入的高性能异步 I/O 框架,统一了 Linux 异步 I/O 框架,支持存储文件和网络文件,设计上真正异步,灵活性和可扩展性优于传统 Linux AIO,但需重写应用适配,性能提升仅在特定场景下约 5%。文章还回顾了 Linux I/O 系统调用的演进,包括阻塞式 I/O、非阻塞式 I/O(select、poll、epoll)、线程池、Direct I
Linux 网络设备
网络通信基础涵盖发展历史、主要协议(TCP/IP、UDP、DNS、DHCP、FTP、HTTP/HTTPS)的特点与作用,以及网线、电缆、光纤等传输介质的分类与特性。
Linux ADC
ADC将模拟信号转换为数字信号,过程包含采样、保持、量化、编码四步。分辨率是衡量转换精度的关键参数,常见于传感器、音频、工业自动化等场景。
Linux CAN
CAN总线由博世于1986年推出,专为汽车电子设计,支持多主通信和非破坏性仲裁,具备CRC校验、错误恢复和差分信号抗干扰能力。硬件连接分两种:CPU自带CAN控制器时直接通过CAN收发器与总线通信,两端需120Ω终端电阻;CPU无CAN控制器时通过SPI转CAN模块实现与CAN总线的数据交换。
