而现在当我们拥有了fastclone之后,通过调用alloc_skb_fclone函数来分配一块大于sizeof(structsk_buff)的内存,也就是在这次请求的skb的下方多申请了一些内存,然后返回的时候设置返回的skb的fclone标记为SKB_FCLONE_ORIG,而多申请的那块内存的sk_buff的fclone为SKB_FCLONE_UNAVAILABLE,这样当我们调用skb_clone克隆这个skb...
skb->truesize = size + sizeof(struct sk_buff); atomic_set(&skb->users, 1); skb->head = data; skb->data = data; skb->tail = data; skb->end = data + size; 需要主意的是, SKB 的 truesize 的大小并不包含 skb_shared_info 结构的大小. 另外,skb 的 end 成员指针也就是skb_shared...
(2)sk_buff->data_len: data_len只计算分片中数据的长度,即skb_shared_info中有效数据总长度(包括frag_list,frags[]中的扩展数据),一般为0 (3)sk_buff->truesize:这是缓冲区的总长度,包括sk_buff结构和数据部分。如果申请一个len字节的缓冲区,alloc_skb函数会把它初始化成len+sizeof(sk_buff)。当skb->...
如果申请一个len字节的缓冲区,alloc_skb函数会把它初始化成len+sizeof(sk_buff)。 当skb->len变化时,这个变量也会变化*/ unsigned int truesize; /*atomic_t users;这是个引用计数,表明了有多少实体引用了这个skb。 其作用就是在销毁skb结构体时,先查看下users是否为零, 若不为零,则调用函数递减下引用计数...
为了使用套接字缓冲区,内核创建了两个后备高速缓存(looaside cache),它们分别是skbuff_head_cache和skbuff_fclone_cache,协议栈中所使用到的所有的sk_buff结构都是从这两个后备高速缓存中分配出来的。两者的区别在于skbuff_head_cache在创建时指定的单位内存区域的大小是sizeof(struct sk_buff),可以容纳任意数目的str...
sk_buff->truesize 这是缓冲区的总长度,包括sk_buff结构和数据部分。如果申请一个len字节的缓冲区,alloc_skb函数会把它初始化成len+sizeof(sk_buff)。当skb->len变化时,这个变量也会变化。 sk_buff->head sk_buff->data sk_buff->tail sk_buff->end ...
*sk_buff控制区 :struct sk_buff所在的区域 *线性数据区 :数据缓冲区域 : sk_buff->head~sk_buff->end 之间的区域 *非线性数据区 :数据缓冲区域的补充区域 :skb_shared_info区域 * * *sk_buff->truesize:线性数据区+非线性数据区+sizeof(struct sk_buff) ...
sk_buff->truesize 这是缓冲区的总长度,包括sk_buff结构和数据部分。如果申请一个len字节的缓冲区,alloc_skb函数会把它初始化成len+sizeof(sk_buff)。当skb->len变化时,这个变量也会变化。 sk_buff->head sk_buff->data sk_buff->tail sk_buff->end ...
skb->truesize: skb的总长度,包括sk_buff结构和数据部分,skb=sk_buff控制信息 + 线性数据(包括头空间和尾空间) + skb_shared_info控制信息 + 非线性数据,所以skb->truesize = sizeof(struct sk_buff) + (head - end) + sizeof(struct skb_shared_info) + data_len。
考虑一个包含2bytes的网络包,需要包括 预留头(64 bytes) + Mac头(14bytes) + IP头(20bytes) + Tcp头(32bytes) + 有效负载为2bytes(len) + skb_shared_info(320bytes) = 452bytes,向上取整后为512bytes;sk_buff这个存储结构占用256bytes;则一个2bytes的网络包需要占用512+256=768bytes(truesize)的内存...