- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 Linux 内核 sysfs 属性读取机制
Linux 内核通过 sysfs 将设备属性以文件形式暴露给用户空间。当执行 cat /sys/... 时,内核根据文件节点的私有指针定位到 struct attribute,再通过 container_of() 从通用 attribute 还原为 device_attribute,调用其 show() 回调生成数据。该过程依赖 kobject 与 device 的嵌套关系、sysfs_ops 统一分发机制及驱动注册的回调函数,实现从用户读取到内核数据返回的完整链路。
2026-10-29 18:33:34
37
原创 无锁环形缓冲区原理与机制
本文系统阐述无锁环形缓冲区的设计原理,重点解析SPSC模型下的数据结构、空满判定、内存顺序约束及并发机制。通过对比留空槽与计数器方案,说明容量利用率的权衡;结合生产者-消费者协作逻辑,强调release/acquire语义在保障数据可见性中的核心作用。以Linux kfifo 为例,揭示其基于逻辑计数与位运算的高效实现,并指出无锁特性依赖于单生产者/单消费者约束。最后指出内核日志缓冲区虽具环形特征,但采用专用实现,非简单复用通用FIFO。
2026-10-29 18:26:00
179
原创 Linux Pinctrl 子系统框架
Linux Pinctrl子系统是管理SoC引脚复用的核心框架,主要包括引脚复用(Pin Multiplexing)和引脚配置(Pin Configuration)两大功能。系统分为四层架构:消费者驱动层、Pinctrl核心层、驱动层和硬件层。核心数据结构包括pinctrl_dev(控制器设备)、pinctrl_desc(控制器描述符)等,通过操作函数集(pinctrl_ops、pinmux_ops、pinconf_ops)实现对硬件寄存器的操作。
2026-01-30 01:08:19
512
原创 GPIO子系统
Linux GPIO子系统摘要: Linux GPIO子系统提供了统一管理GPIO(通用输入/输出)接口的框架,采用分层架构设计:硬件层→控制器驱动→核心层→驱动层→用户空间。新API使用gpio_desc描述符而非整数编号,支持自动资源管理。核心数据结构包括gpio_desc(描述单个GPIO)、gpio_device(代表GPIO控制器)和gpio_chip(硬件操作接口)。子系统支持设备树配置,通过of_node等结构实现硬件抽象。
2026-01-30 01:06:43
582
原创 Linux VFS 深度解析 (五):超级块(super_block)与文件系统挂载
本文深入解析 Linux VFS 中的超级块(super_block)核心机制。作为已挂载文件系统实例的代表,super_block 连接 VFS 与具体文件系统,包含设备信息、文件系统类型、操作函数表等关键数据。文章详细剖析了 super_block 的结构定义、文件系统注册机制(file_system_type)、挂载/卸载流程(mount/umount),以及 VFS 四大对象(super_block、dentry、inode、file)间的协同关系。
2026-01-30 00:57:52
1059
原创 Linux VFS 深度解析 (四):路径名查找
Linux VFS 路径名查找机制解析 摘要:本文深入剖析Linux VFS中路径名查找(namei)的核心机制。路径查找是将路径字符串转换为内核数据结构的关键过程,涉及两种优化模式:RCU-walk(无锁快速路径)和REF-walk(传统加锁方式)。系统通过nameidata结构体维护查找状态,处理符号链接、挂载点穿越等复杂场景,同时兼顾性能与并发安全。核心挑战包括纳秒级热点路径访问、符号链接处理、权限检查等,VFS通过精巧的设计实现高效稳定的路径解析。
2026-01-30 00:30:00
712
原创 Linux VFS 深度解析(三):struct file(文件对象)
Linux VFS 深度解析(三):struct file(文件对象)摘要 struct file 是 Linux VFS 中表示进程打开文件实例的核心数据结构,与表示磁盘文件的 inode 不同,它记录了文件打开时的运行时状态。关键点包括: 本质区别:inode 表示持久化文件元数据,struct file 表示打开实例(含偏移量、访问模式等) 生命周期:从 open() 到 close(),内存中动态创建销毁 多实例性:同一文件可被多次打开,每个打开操作创建独立 struct file 核心字段:
2026-01-30 00:27:59
900
原创 Linux VFS 深度剖析(二):目录项缓存 dentry
本文基于 Linux 4.19 内核源码,深入剖析了 VFS 中的目录项缓存(dentry)机制。dentry 作为路径解析的核心数据结构,负责缓存路径名到 inode 的映射关系,加速文件访问。文章详细分析了 struct dentry 的组成结构,包括文件名存储、目录树关联、引用计数等关键字段,并解释了 dentry 与 inode 的多对一关系。通过示意图展示了 dcache 在 VFS 路径解析中的作用,以及短文件名优化、负缓存等特性。最后还介绍了 dentry 的状态转换和 LRU 回收机制。
2026-01-25 01:54:25
467
原创 Linux VFS 深度剖析(一):索引节点 inode
本文深入剖析了Linux VFS中的核心数据结构struct inode。inode是Unix/Linux文件系统的关键概念,存储文件的元数据(权限、所有者、大小、时间戳等),但不包含文件名和内容。文章详细解析了inode在VFS架构中的位置及其与dentry、super block的关系,重点分析了struct inode的结构定义,包括文件属性组、VFS操作表、状态同步机制、哈希链表管理、引用计数等关键字段,并对应说明了这些字段与stat命令输出的关系。通过内核源码(Linux 4.19)展示了inod
2026-01-25 01:52:33
601
原创 三极管完整知识总结
三极管知识摘要 三极管(BJT)是一种电流控制器件,分为NPN和PNP两种类型。NPN型三极管电流从集电极流向发射极,导通条件是基极电压比发射极高0.7V;PNP型电流方向相反,导通条件是基极电压比发射极低0.7V。三极管有三种工作状态:截止状态(C-E断路)、放大状态(线性放大信号)和饱和状态(C-E完全导通)。典型应用包括LED驱动、继电器控制和信号放大等,使用时需注意基极电阻计算以确保工作状态正确。
2026-01-15 01:45:19
737
原创 深入理解 Linux VFS 文件系统框架
本文以debugfs为例,深入分析Linux VFS文件系统的五层架构设计。重点剖析file_system_type、super_block、dentry、inode和file五大核心数据结构的关系与实现机制。通过解读debugfs这一精简的内存文件系统,展示VFS如何统一管理不同文件系统,为理解更复杂的文件系统实现奠定基础。文章详细介绍了各数据结构的关键字段、注册流程和回调机制,揭示了Linux文件系统的核心抽象层设计思想。
2026-01-15 01:36:17
1040
1
原创 C++元编程完全指南
C++元编程核心摘要 元编程是C++中利用模板在编译期进行计算和类型操作的强大技术。本文介绍了从基础模板到高级元编程技术的完整知识体系。
2025-12-17 01:18:10
870
原创 CAN协议完全指南
本文全面介绍了CAN总线协议的基础知识与应用。主要内容包括:CAN协议的基本概念与多主站、广播式通信特点;物理层结构采用差分信号传输,需两端120Ω终端电阻;显性位(逻辑0)与隐性位(逻辑1)的电气特性及其在仲裁机制中的关键作用;标准帧与扩展帧的报文格式详解;独特的非破坏性仲裁机制实现高效通信;以及错误检测、节点状态管理等可靠性保障措施。文章还涵盖了CAN在汽车电子、工业自动化等领域的典型应用场景,并比较了不同CAN标准的特性差异。通过清晰的图表和实例说明,帮助读者深入理解CAN总线的工作原理与技术优势。
2025-12-17 00:46:22
1015
原创 C++左值与右值深度解析
C++左值与右值深度解析:本文系统讲解C++中的左值(lvalue)和右值(rvalue)概念及其应用。左值具有明确内存地址,可持久存在;右值表示临时对象或即将销毁的值。文章详细剖析左值和右值的特征、分类标准,并深入讲解引用机制(左值引用、右值引用)、移动语义和完美转发等现代C++特性。通过实际应用场景和代码示例,帮助读者掌握这些核心概念,提升代码效率和表达能力。同时指出常见陷阱和最佳实践,全面覆盖从基础到高级的知识点。
2025-12-14 21:51:31
1025
原创 Linux平台设备驱动模型详解
摘要 本文以Rockchip RK3568芯片的PWM驱动为例,深入分析Linux平台设备驱动模型。通过研究drivers/pwm/pwm-rockchip.c源码,阐述了平台设备、总线、驱动程序之间的关系,重点探讨了设备树节点到平台设备的转换机制、设备与驱动的匹配绑定流程,揭示了平台总线的软件实现本质。文章详细解析了PWM驱动的核心数据结构、功能函数及关键机制,包括寄存器锁定、原子性更新等特性,为理解Linux平台设备驱动开发提供了实践参考。 关键词:Linux驱动、平台设备、设备树、PWM驱动
2025-12-14 00:04:22
1328
原创 如何自己搭建团队服务器
本文介绍了在Ubuntu 22.04系统上搭建团队开发环境的完整流程。主要内容包括:1) 系统基础环境配置,包括磁盘挂载与配额管理;2) Samba文件共享服务安装与权限设置;3) 自动化用户管理脚本实现;4) ROS2开发环境部署建议;5) 常见问题解决方案与优化建议。文章提供了详细的命令操作步骤和配置示例,涵盖用户创建、存储配额、文件共享等核心功能,特别强调通过脚本自动化实现批量用户管理,并给出了系统维护和安全管理的实用建议。附录还包含关键命令速查表,方便日常运维管理。
2025-06-30 09:43:27
458
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅