<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u010971180的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u010971180</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010971180]]></copyright><item><title><![CDATA[【Kdump】 ELF核心转储文件]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/157541515</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/157541515</guid><author>u010971180</author><pubDate>Fri, 30 Jan 2026 09:23:59 +0800</pubDate><description><![CDATA[摘要： ELF核心转储文件（ET_CORE）是Linux/Unix系统中记录程序崩溃时内存状态的特殊文件，通过保存寄存器、内存映像等数据辅助调试。其结构包含ELF头和程序头表（PT_NOTE存储进程状态，PT_LOAD存储内存布局），但不含节头表。调试时，用户空间程序可通过GDB加载core文件分析崩溃点，内核级问题则需使用crash工具匹配vmlinux版本。最佳实践包括编译时添加调试信息（-g）、配置系统生成完整core文件，并确保工具链版本一致。ELF核心文件为程序故障分析提供了关键支持，显著提升调试]]></description><category></category></item><item><title><![CDATA[【Linux PCIe子系统】Linux PCIe子系统深度解析：从硬件原理到驱动开发]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/154771244</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/154771244</guid><author>u010971180</author><pubDate>Thu, 13 Nov 2025 08:46:39 +0800</pubDate><description><![CDATA[PCIE]]></description><category></category></item><item><title><![CDATA[【RCU】RCU 基础原理1]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151717370</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151717370</guid><author>u010971180</author><pubDate>Mon, 15 Sep 2025 14:59:07 +0800</pubDate><description><![CDATA[RCU， Read-Copy-Update，是Linux内核的一种同步机制，特点就是：读者并不需要直接与写者进行同步，读者与写着也能并发的执行。RCU的目标就是最大程度的减少读者测的开销，因此也常用于对读者性能要求高的场景。]]></description><category></category></item><item><title><![CDATA[【内存管理】设置内存页表项 set_pte_at]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151368290</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151368290</guid><author>u010971180</author><pubDate>Tue, 09 Sep 2025 18:02:26 +0800</pubDate><description><![CDATA[安全地完成了内核页表的设置。其核心目标是确保页表修改的原子性和正确性，避免硬件与软件的并发冲突，并在需要时同步处理器缓存。理解其原理对于调试内核页表操作（如缺页异常、内存泄漏）至关重要。生成的值，并确保操作的安全性和正确性。（PFN=0x1000），权限为。是 Linux 内核中用于。]]></description><category></category></item><item><title><![CDATA[【内存管理】常用的页表映射函数]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151366317</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151366317</guid><author>u010971180</author><pubDate>Tue, 09 Sep 2025 17:24:06 +0800</pubDate><description><![CDATA[根据当前虚拟地址 addr 和目标结束地址 end，计算当前 PGD 项 能够覆盖的最大虚拟地址范围的结束地址 next。

流程解释：

循环处理每个 PGD 项：通过 do-while 循环，逐个处理 PGD 项。
计算当前 PGD 项的地址范围：通过 pgd_addr_end 确定当前 PGD 项的地址范围 [addr, next)。
初始化下级页表：调用 alloc_init_pud 为当前 PGD 项分配并初始化 PUD 页表。
更新物理地址偏移：根据当前处理的地址范围大小（next - addr]]></description><category></category></item><item><title><![CDATA[【内存管理】Vmalloc - VM_FLUSH_RESET_PERMS]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151365155</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151365155</guid><author>u010971180</author><pubDate>Tue, 09 Sep 2025 16:33:00 +0800</pubDate><description><![CDATA[摘要：Linux内核中的VM_FLUSH_RESET_PERMS标志用于控制虚拟内存权限修改时的TLB刷新行为。当该标志被设置时，内核会在权限变更后强制刷新TLB以确保一致性；未设置时则可能跳过刷新以优化性能。该标志常见于动态权限修改、高安全性或多线程场景，其使用需权衡正确性与性能，并考虑硬件自动同步机制。内核通过检查该标志决定是否调用flush_tlb_range()，确保权限变更的及时生效。（149字）]]></description><category></category></item><item><title><![CDATA[【内存管理】6.6内核 - Vmalloc机制 - __purge_vmap_area_lazy]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151361175</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151361175</guid><author>u010971180</author><pubDate>Tue, 09 Sep 2025 14:43:26 +0800</pubDate><description><![CDATA[这段代码动态计算处理延迟释放vmap区域的helper线程数量。通过读取vmap_lazy_nr（待处理区域数）除以lazy_max_pages（每个线程处理能力）得到初始值，再使用clamp函数将结果限制在1到系统可用节点数(nr_purge_nodes)之间，最后减1。该机制实现了根据系统负载动态调整线程数量，确保高效处理虚拟地址映射释放的同时避免资源浪费。关键点包括原子操作确保线程安全、基于系统能力的动态调整，以及多核并行处理优化。]]></description><category></category></item><item><title><![CDATA[【内存管理】__merge_or_add_vmap_area 函数解析]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151360656</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151360656</guid><author>u010971180</author><pubDate>Tue, 09 Sep 2025 14:27:11 +0800</pubDate><description><![CDATA[本文深入解析了Linux内核中的__merge_or_add_vmap_area函数及其关键调用kmem_cache_free(vmap_area_cachep, va)。该函数负责将释放的虚拟地址区域插入全局管理结构并尝试合并相邻空闲块以减少内存碎片，通过红黑树和链表维护地址区间的有序性。kmem_cache_free调用则用于释放合并后不再需要的vmap_area结构体内存。文章详细剖析了函数参数、核心逻辑、错误处理机制及典型应用场景，重点强调了合并顺序的严格性和内存管理的高效性。该机制广泛应用在vma]]></description><category></category></item><item><title><![CDATA[【实时内核稳定性】深入分析网络NAIP异常调度问题]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151173850</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151173850</guid><author>u010971180</author><pubDate>Thu, 04 Sep 2025 14:00:57 +0800</pubDate><description><![CDATA[文章摘要：通过crash工具分析Linux内核转储文件，发现系统因khungtaskd触发watchdog而panic。中断信息显示网络相关软中断(NET_TX/NET_RX)和定时器中断活跃，kworker线程因PHY状态检查阻塞。hrtimer_cpu_base结构显示CPU0的定时器基数异常，active_bases值为0x71，expires_next指向异常时间戳，可能由定时器管理问题导致系统崩溃。分析涉及内核定时器、中断处理和任务调度等核心机制。（149字）]]></description><category></category></item><item><title><![CDATA[【Linux 内存管理】3 进程地址空间 - VMA操作函数]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151147867</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151147867</guid><author>u010971180</author><pubDate>Wed, 03 Sep 2025 13:57:16 +0800</pubDate><description><![CDATA[当一个进程要运行起来需要以下的内存结构：用户态： - 代码段、全局变量、BSS - 函数栈 - 堆空间 - 内存映射区内核态 - 内核代码、全局变量、BSS - 内核数据结构：task_struct - 内核栈、动态分配的内存Linux为虚拟内存不同的段，提供了不同的数据结构来描述，在Linux内核眼中所有的进程、线程都是task统一用task_struct描述。- task_struct 数据结构中的mm字段（mm_struct类型）描述了进程或线程用户态的内存信息。]]></description><category></category></item><item><title><![CDATA[【Linux 内存管理】2 进程地址空间 - vm_area_struct 数据结构]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151147563</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151147563</guid><author>u010971180</author><pubDate>Wed, 03 Sep 2025 13:48:28 +0800</pubDate><description><![CDATA[VMA(vm_area_struct）数据结构定义在 include/linux/mm_types.h 文件中，由mm_struct中的mmap指针指向。]]></description><category></category></item><item><title><![CDATA[【Linux 内存管理】1 进程地址空间 - VMA]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151147243</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151147243</guid><author>u010971180</author><pubDate>Wed, 03 Sep 2025 13:40:56 +0800</pubDate><description><![CDATA[本文摘要： 进程地址空间是进程可寻址的虚拟地址空间，64位系统支持256TB用户空间。内存区域包括代码段、数据段、用户栈、mmap区和堆区，通过VMA数据结构管理，各区域互不重叠。mm_struct结构体描述进程内存布局，包含VMA链表、红黑树、页表指针等关键信息。task_struct通过mm成员关联mm_struct，形成完整的内存管理结构。进程访问非法内存会触发缺页异常，可能导致段错误终止进程。64位Linux系统采用特定的虚拟内存空间布局方案。]]></description><category></category></item><item><title><![CDATA[ARMv8架构01 - ARM64架构&寄存器基础]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/151146932</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/151146932</guid><author>u010971180</author><pubDate>Wed, 03 Sep 2025 13:24:39 +0800</pubDate><description><![CDATA[本文介绍了ARMv8-A架构的基础知识，重点分析了64位执行状态AArch64的核心特性。主要内容包括：1）ARMv8-A架构特点，如64位地址空间、31个64位通用寄存器和新的异常处理模型；2）AArch64执行状态的寄存器组织，包括通用寄存器、特殊寄存器和处理器状态寄存器；3）ARMv8的异常等级机制，从EL0（用户态）到EL3（安全监控）；4）系统寄存器的分类和访问方式；5）数据对齐要求和不对齐访问的处理机制。文章为理解ARM64架构提供了系统性的技术概览，涵盖了寄存器、异常处理、内存访问等关键概念。]]></description><category></category></item><item><title><![CDATA[【Linux实时内核机制】ww_rt_mutex 的contending_lock异常问题]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/150931685</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/150931685</guid><author>u010971180</author><pubDate>Wed, 27 Aug 2025 17:14:23 +0800</pubDate><description><![CDATA[该摘要描述了Linux内核中ww_rt_mutex的contending_lock异常问题。异常现场显示在kworker线程中触发了DEBUG_LOCKS_WARN_ON警告，提示ctx-&gt;contending_lock为空。异常发生在test_cycle_work函数中，调用栈涉及工作队列处理流程。硬件信息显示为开发板环境，内核未修改状态。最后提到问题已解决，但具体分析过程待续。摘要保留了关键错误信息、调用栈和硬件环境等核心内容，便于快速了解问题概况。]]></description><category></category></item><item><title><![CDATA[[Linux内核实时机制] Wound/wait 测试：rt_mutex_pre_schedule之sched_rt_mutex异常]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/150930799</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/150930799</guid><author>u010971180</author><pubDate>Wed, 27 Aug 2025 17:07:41 +0800</pubDate><description><![CDATA[摘要 在Linux内核启动过程中进行Wound/wait测试时，发现rt_mutex_pre_schedule函数出现异常。调用栈显示该异常发生在EDEADLK处理测试环节，最终触发了内核警告。硬件平台为xxx开发板，内核版本6.6.0-33+。异常发生时系统处于启动阶段(swapper/0进程)，相关寄存器状态和调用栈信息已被完整记录。该问题可能涉及实时互斥锁调度机制，需要进一步分析rt_mutex_pre_schedule函数的实现细节。]]></description><category></category></item><item><title><![CDATA[【Linux内核实时】实时互斥锁 - sched_rt_mutex]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/150771515</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/150771515</guid><author>u010971180</author><pubDate>Mon, 25 Aug 2025 15:51:03 +0800</pubDate><description><![CDATA[Linux内核中的rt_mutex_pre_schedule()函数负责处理实时互斥锁（rt_mutex）的调度前准备工作。它通过检查sched_rt_mutex标志位防止递归加锁，并使用lockdep_assert确保进程不会重复持有锁。该函数还会调用sched_submit_work提交调度相关工作，为后续的锁等待和优先级继承（PI）机制做准备。其核心目的是避免因递归调用导致的状态混乱，确保实时调度逻辑的正确性，特别是防止优先级反转问题。该函数在维护PI链和保证实时性方面起关键作用。]]></description><category></category></item><item><title><![CDATA[【kdump专栏】kimage_alloc_init 初始化]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/148687383</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/148687383</guid><author>u010971180</author><pubDate>Mon, 16 Jun 2025 11:34:43 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[【DMA专栏】DMA 回调函数的实时性]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/148681879</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/148681879</guid><author>u010971180</author><pubDate>Mon, 16 Jun 2025 09:01:48 +0800</pubDate><description><![CDATA[优化方向方法效果轻量化回调只唤醒主任务，不处理复杂逻辑降低中断延迟延后处理机制使用 workqueue / tasklet / softirq提升实时性和并发能力绑定CPU核心设置 affinity减少上下文切换使用 RT 内核开启 PREEMPT_RT 支持支持硬实时调度创建实时线程使用SCHED_FIFO线程精确控制调度优先级避免睡眠操作不用mutexkmallocprintk提高稳定性零拷贝机制减少数据复制开销。]]></description><category></category></item><item><title><![CDATA[【技术工具】源码管理 - GIT工具]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/148635330</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/148635330</guid><author>u010971180</author><pubDate>Fri, 13 Jun 2025 17:02:11 +0800</pubDate><description><![CDATA[之前参考语雀一位大佬的，但链接找不到了，仅供参考。]]></description><category></category></item><item><title><![CDATA[【trace32】实时内核stmmac_napi_poll网络问题]]></title><link>https://blog.youkuaiyun.com/u010971180/article/details/148628084</link><guid>https://blog.youkuaiyun.com/u010971180/article/details/148628084</guid><author>u010971180</author><pubDate>Fri, 13 Jun 2025 11:01:58 +0800</pubDate><description><![CDATA[【代码】【trace32】实时内核stmmac_napi_poll网络问题。]]></description><category></category></item></channel></rss>