tcp.c文件的reset_xmit_timer函数(7)
时间:2009-08-12 来源:978计划
tcp.c文件的reset_xmit_timer函数
978计划工作组 2009-8-12
1函数源码
/*
* 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);
}
2函数用途
重新设置重传计时器。
3语句注释
3.1 static void reset_xmit_timer(struct sock *sk, int why, unsigned long when)
why:计时器的超时原因。
when:计时器的时间。如果小于0则设置时间为3。
3.2 del_timer(&sk->retransmit_timer);
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本身。
3.3 sk->ip_xmit_timeout = why;
sk->ip_xmit_timeout:计时器的超时原因。。
3.4 sk->retransmit_timer.expires=when;
sk->retransmit_timer.expires:用于存储定时器的定时时间。
3.5 add_timer(&sk->retransmit_timer);
add_timer:将定时器加入系统定时器队列。