随笔分类 - Linux内核
自旋锁探秘
摘要:spinlock 和 mutex Spinlock是linux内核中常用的一种互斥锁机制,和mutex不同,当无法持锁进入临界区的时候,当前执行线索不会阻塞,而是不断的自旋等待该锁释放。正因为如此,自旋锁也是可以用在中断上下文的。也正是因为自旋,临界区的代码要求尽量的精简,否则在高竞争场景下会浪费宝
阅读全文
linux内核网络源码学习(二)
摘要:为什么要使用skb_reserve函数把边界对齐 skb_reserve 函数通常用于网络编程中的数据包处理,特别是在构建自定义协议栈或数据包处理模块时。它的作用是为数据包的头部预留额外的空间,以确保数据包的头部数据在内存中是对齐的。 边界对齐的概念是因为许多硬件平台和网络协议要求数据包头的字节对齐
阅读全文
linux内核网络源码学习(一)
摘要:代码一 linux/include/net/tcp.h #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) 这段代码是一个宏定义,用于将一个struct sk_buff结构中的成员cb转换为struct tcp_skb
阅读全文