自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 5.4.18 ptr_ring.h环形缓冲队列源码分析(附图)

管理环形缓冲队列ptr_ring的实现

2025-04-14 16:14:20 733

原创 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关注的人

提示
确定要删除当前文章?
取消 删除