- 论坛徽章:
- 1
|
firkraag 发表于 2014-03-20 07:13
Yes, but except with the MSG_MORE flag or the data size exceeds the mtu.
根据ip_append_data的函数过程,可以很明显看出,当首次调用ip_append_data时,sk->sk_write_queue肯定为空,则一定会执行goto alloc_new_skb,于是有如下调用过程序列
sock_alloc_send_skb
|
|---sock_alloc_send_pskb(sk, size, 0, noblock, errcode)
|
|---alloc_skb(header_len, gfp_mask)
|
|---此时,因为sock_alloc_send_pskb中传入的第3个参数为0,表示skb->data_len为0,即No page
显然,只要是首次调用ip_append_data函数,则首个入队列sk_write_queue的skb一定是不包含page数据的skb,而和MSG_MORE或data是否超过mtu其实无关,我这样理解firkraag是否认同?
|
|