- 博客(7)
- 收藏
- 关注
原创 linux 4.19.90 watchdog+sbsa+d2000看门狗源码分析
watchdog设备就是用狗来监视某件事情,如果在规定时间内未做,就会导致预定行为发生。而要做的事情就是喂狗。 一句话就是←-↙ ↖↙ ↖开始计时 ----> 喂狗,则重新计时↘↘ ----> 若在计时范围内不执行喂狗操作,就会导致预定义行为,通常是重启 而一般来说,watchdog有硬狗以及软狗。 硬狗就是硬件的看门狗,一般放在CPU芯片中,拿FT-D2000来说,里面内置了两个看门狗,直接操作硬件的寄存器进行喂狗,超时之后直接导致cpu层面的reset,和操作系统就完全无关了。
2025-04-27 21:21:55
1668
原创 linux 4.19.90 acpi与platform设备
重中之重,现在的主流两种arm架构的启动方式 ① UEFI + ACPI表(acpi支持硬件动态编码,这个不太了解是什么机制) ② uboot +设备树。
2025-04-24 17:31:14
902
原创 linux 5.4.18 page_pool源码分析(附图)
在第一次分配完毕后整体的情况是这样的(省略与空间分配无关的成员): 具体的回收工作后面会讲,这里在初始化完毕后,该环形缓冲区还是空的 (1) 在5.4.18的代码中,每次分配空间调用的都是page_pool_dev_alloc_pages,这个接口只能返回单个要使用的空间,效率低下,后续使用page_pool_dev_alloc_frag来批量分配空间。 (2)
2025-04-14 22:24:03
2136
原创 linux 4.19.90 RPS/RFS源码分析(附图)
① 有些网卡会在驱动层面就设置sk_buff的hash值,这个不确定是怎么计算的 ②对于分片包,仅根据IP包源地址和目的地址进行hash,对于非分片包,会进一步回去包的源端口和目的端口进行hash。参考博客: https://segmentfault.com/a/1190000022661159。
2025-04-09 17:50:08
566
原创 linux4.19.90 stmmac驱动源码分析(附图)
可以看到初始化过程,最主要的工作是设置了stmmac_priv结构体,初始化了net_device结构,并将dma以及mac操作集合赋值。 PHY驱动相关我暂时省略了,后面会补充 内核选择发送队列 将sk_buff的frags[i]和data映射到DMA硬件描述符中 调整队列顺序 触发中断回收资源 还有最后一步,在DMA发送完毕的时候,还会触发一次DMA中断,也就是之前绑定的初始化函数stmmac_interrupt()
2025-04-09 17:42:43
601
原创 linux4.19.90 ip重组源码分析全过程(附图)
看完这个函数有几个需要明确的地方: ① 并不是每个ip封包都会插入红黑树,如果存在某个分片刚好是尾部分片的右连续分片 这个分片并不会插入到红黑树中,而是会插入到->next_frag中,并更新其为fragments_tail ② fragments_tail和last_run_head并不是一直为同一个节点,上面提到的fragments_tail指向的是最后一个片 而last_run_head指的是最后一个红黑树节点,也就是说真实的情况是这样的。
2025-04-09 17:28:21
1871
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人