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

2011年(1)

2010年(5)

2009年(35)

我的朋友

分类: LINUX

2009-08-03 16:08:42

tcp.c文件的tcp_dequeue_established函数

978计划工作组 2009-8-3

1函数源码

static struct sk_buff *tcp_dequeue_established(struct sock *s)

{

       struct sk_buff *skb;

       unsigned long flags;

       save_flags(flags);

       cli();

       skb=tcp_find_established(s);

       if(skb!=NULL)

              skb_unlink(skb);    /* Take it off the queue */

       restore_flags(flags);

       return skb;

}

2函数用途

此函数被tcp_accept函数调用,通过调用函数tcp_find_established函数查看是否有已经完成3次握手的套接字的sock结构,找到的套接字的sock结构在经过tcp_accept处理后将被分配一个新的套接字用于以后的数据通信。

3语句注释

3.1 save_flags(flags);

cli();

save_flags(flags)是一个宏,中断保留,与restore_flags配对使用且在同一个函数内被调用。

cli()关闭中断。

3.2 skb_unlink(skb);

skb_unlink(skb)从链表中删除此sock结构节点。

3.3 restore_flags(flags);

restore_flags(flags)是一个宏,中断恢复,只是恢复到save_flags时的状态,不一定要开中断,与save_flags配对使用且在同一个函数内被调用。

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