Chinaunix首页 | 论坛 | 博客
  • 博客访问: 155928
  • 博文数量: 41
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-14 10:16
文章分类
文章存档

2011年(1)

2010年(5)

2009年(35)

我的朋友

分类: LINUX

2009-08-12 10:15:47

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将定时器加入系统定时器队列。

阅读(1081) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~