全部博文(41)
分类: LINUX
2009-08-12 10:15:47
tcp.c文件的reset_xmit_timer函数
978计划工作组
/*
* Reset the retransmission timer
*/
static void reset_xmit_timer(struct sock *sk, int why, unsigned long when)
{
del_timer(&sk->retransmit_timer);
sk->ip_xmit_timeout = why;
if((int)when < 0)
{
when=3;
printk("Error: Negative timer in xmit_timer\n");
}
sk->retransmit_timer.expires=when;
add_timer(&sk->retransmit_timer);
}
重新设置重传计时器。
why:计时器的超时原因。
when:计时器的时间。如果小于0则设置时间为3。
del_timer:将原有定时器从系统定时器队列中删除。
sk->retransmit_timer:是struct timer_list类型,sk->retransmit_timer.function为到期执行函数,在tcp_conn_request函数中sk->retransmit_timer.function被初始化为retransmit_timer函数,在tcp_conn_request函数中sk->retransmit_timer.data被初始化为sk,即data就是sk本身。
sk->ip_xmit_timeout:计时器的超时原因。。
sk->retransmit_timer.expires:用于存储定时器的定时时间。
add_timer:将定时器加入系统定时器队列。