- 论坛徽章:
- 2
|
本帖最后由 duoniK 于 2014-01-10 15:40 编辑
要对 skb中线性区的数据进行修改。
目标是tcp_write_xmit调用的发送队列中的 skb
以下是自己做的修改
static int tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
int push_one, gfp_t gfp)
{
struct tcp_sock *tp = tcp_sk(sk);
struct sk_buff *skb;
unsigned int tso_segs, sent_pkts;
int cwnd_quota;
int result;
//添加如下
unsigned int time = 0;
unsigned int Length;
char buffer[1500] = {0};
.....
while ((skb = tcp_send_head(sk))) {
unsigned int limit;
//添加如下
Length = skb->end - skb->data;
memcpy(buffer, skb->data, Length);
printk("time is %d\n", ++time);
printk("buffer is %s\n", buffer);
...
}
想问下 为什么添加了以上 printk 代码之后,调用TCP协议就卡住了呢? 是应为 memcpy 太耗时了么? |
|