青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

struct sk_buff

/home/green/src/list.c
alloc_skb
kfree_skb
skb_put
skb_trim


#############
/home/green/src/list.c
#############
alloc_skb
kfree_skb
skb_put  // used data后部擴(kuò)展
skb_push // used data前部擴(kuò)展
skb_pull // used data前部截?cái)?/div>
skb_trim // used data后部截?cái)?/div>
skb_reserve // data+分片后移,只允許對(duì)空緩存使用

skb_queue_head_init  // 初始化struct sk_buff_head
skb_queue_head  // list頭部添加一個(gè)packet
skb_queue_tail  // list尾部添加一個(gè)packet
skb_dequeue      // 移去list頭部第一個(gè)packet(返回移除的packet指針,內(nèi)存沒(méi)有收回?)
skb_dequeue_tail // 移去list尾部第一個(gè)packet  
skb_queue_purge  // 清空l(shuí)ist中的節(jié)點(diǎn)
skb_append      // 在list的給定packet后append一個(gè)packet
skb_insert      // 在list的給定packet前insert一個(gè)packet



#############
alloc_skb
#############
<linux-2.6.36/net/core/skbuff.c>

__alloc_skb()分析:

申請(qǐng)struct skb_buff skb空間, 必須從CACHE中申請(qǐng)(skbuff_fclone_cache或skbuff_head_cache).
申請(qǐng)數(shù)據(jù)區(qū)內(nèi)存, 使用kmalloc. 數(shù)據(jù)區(qū)包括字節(jié)對(duì)齊后的size和struct skb_shared_info.
填充skb結(jié)構(gòu).
填充分片信息struct skb_shared_info shinfo.
如果頭部skb_buff是從skbuff_fclone_cache中申請(qǐng)的,do something... //TODO

********

__alloc_skb()完成時(shí),內(nèi)存狀態(tài):

skb           struct sk_buff     <-| skb->truesize
              --------------       |
data          size                 |
skb->data                          |
skb->head                          |
              -------------      <-|
              struct skb_shared_info

tail 和 end是偏移量
skb->tail = skb->data - skb->head = 0
skb->end = skb->tail + skb->size

********

head,data是指針,tail,end是偏移量。

<linux-2.6.36/include/linux/skbuff.h>
#ifdef NET_SKBUFF_DATA_USES_OFFSET
typedef unsigned int sk_buff_data_t;
#else
typedef unsigned char *sk_buff_data_t;
#endif

struct sk_buff {
    /* These elements must be at the end, see alloc_skb() for details.  */
    sk_buff_data_t      tail;
    sk_buff_data_t      end;
    unsigned char       *head,
    *data;

    unsigned int        truesize;
    atomic_t        users;
};

*********
skb,shinfo的引用計(jì)數(shù)都是原子類型atomic_t.
volatile只讀內(nèi)存,不讀寄存器. 


#############
kfree_skb
#############
內(nèi)存屏障

軟件可通過(guò)讀寫屏障強(qiáng)制內(nèi)存訪問(wèn)次序.所有在設(shè)置讀寫屏障之前發(fā)起的內(nèi)存訪問(wèn),必須先于在設(shè)置屏障之后發(fā)起的內(nèi)存訪問(wèn)之前完成,確保內(nèi)存訪問(wèn)按程序的順序完成.

smp_mb()    適用于多處理器的內(nèi)存屏障。
smp_rmb()   適用于多處理器的讀內(nèi)存屏障。

http://blogold.chinaunix.net/u3/93713/showart_2061476.html


#############
skb_put
#############
BUG() BUGON()

BUG()和BUG_ON()被用來(lái)提供斷言,當(dāng)被調(diào)用時(shí)會(huì)引發(fā)oops,導(dǎo)致棧的回溯和錯(cuò)誤信息的打印.
大部分體系結(jié)構(gòu)把BUG()定義成某種非法操作.
斷言某種情況不該發(fā)生:
if(bad_thing):
    BUG();
或者更好的形式:
BUG_ON(bad_thing);

******
frag_list

如果傳輸層將數(shù)據(jù)包分片了,就會(huì)把這些數(shù)據(jù)包放到skb的frag_list鏈表中.

******
skb_put 在尾部擴(kuò)展used data area.常被用于給數(shù)據(jù)塊添加協(xié)議尾部.
其實(shí)就修改了tail偏移量和len值,別的什么都沒(méi)做.
設(shè)了倆斷言:
數(shù)據(jù)包不能有分片;
擴(kuò)展數(shù)據(jù)區(qū)不能超出skb->end.


#############
skb_trim
#############
struct sk_buff

truesize = skb + data
len = data + 分片
data+len = 分片

posted on 2011-03-24 18:07 小默 閱讀(943) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 289
  • 文章 - 0
  • 評(píng)論 - 84
  • 引用 - 0

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

  •  

積分與排名

  • 積分 - 297095
  • 排名 - 89

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲天堂成人| 欧美一区=区| 欧美日韩一区精品| 欧美日韩三级| 国产精品卡一卡二| 国产一区二区精品久久91| 国产日本欧美一区二区三区在线 | 一本色道久久综合| 亚洲色在线视频| 欧美一级片在线播放| 久久久久国产精品一区| 久久综合九色综合久99| 欧美激情一区二区久久久| 欧美亚一区二区| 影音先锋久久久| 一本到高清视频免费精品| 欧美一区二区三区免费在线看 | 欧美主播一区二区三区美女 久久精品人| 亚洲欧洲99久久| 欧美fxxxxxx另类| 一区二区三区四区国产| 久久精品国产77777蜜臀| 欧美精品一区二区三区高清aⅴ| 国产精品高清在线观看| 在线观看欧美视频| 亚洲男女自偷自拍| 亚洲成色777777在线观看影院| 欧美日韩三级| 国产一二精品视频| 最新中文字幕一区二区三区| 亚洲一区二区在线看| 久久综合九色综合网站| 一卡二卡3卡四卡高清精品视频| 久久爱www久久做| 欧美系列亚洲系列| 亚洲精选91| 久久综合伊人77777麻豆| 亚洲午夜av| 欧美日韩国产综合视频在线观看中文 | 亚洲综合三区| 欧美日韩国产美女| 亚洲第一精品久久忘忧草社区| 亚洲综合999| 亚洲美女电影在线| 欧美成人亚洲成人| 18成人免费观看视频| 欧美精品18+| 午夜一区二区三区不卡视频| 欧美日韩精品一区二区在线播放| 国产午夜精品美女毛片视频| 亚洲自拍都市欧美小说| 亚洲国产一二三| 嫩草国产精品入口| 一区精品久久| 美日韩精品视频免费看| 久久精品女人天堂| 精品88久久久久88久久久| 久久精品国产亚洲aⅴ| 亚洲免费在线视频一区 二区| 欧美四级在线| 亚洲一区二区三区三| 一区二区三区四区精品| 国产精品日韩欧美一区| 欧美一区二区三区久久精品 | 亚洲老司机av| 欧美日韩国产91| 亚洲天堂网在线观看| 亚洲视频在线观看一区| 国产精品久久久久久久久搜平片 | 国产精品黄色在线观看| 亚洲小说欧美另类社区| 亚洲一区二区三| 国产日韩欧美日韩| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久综合网| 亚洲精品欧美极品| 在线视频免费在线观看一区二区| 国产精品视频网站| 老司机一区二区三区| 欧美激情精品久久久久久大尺度| 99国产精品国产精品久久| 国产精品99久久99久久久二8 | 欧美一区二区精品在线| 久久精品官网| av成人动漫| 欧美一级片久久久久久久| 亚洲国产mv| 一区二区三区国产在线| 韩国亚洲精品| 一本色道久久综合精品竹菊| 国产日韩欧美综合一区| 欧美激情一区二区三区在线视频观看 | 欧美成人综合一区| 欧美精品久久99| 欧美制服丝袜| 欧美成va人片在线观看| 午夜精品久久久久久久| 欧美xxxx在线观看| 性欧美精品高清| 欧美国产大片| 久久精品一区| 国产精品高潮粉嫩av| 老司机午夜免费精品视频 | 亚洲高清色综合| 在线视频一区二区| 亚洲第一在线综合在线| 亚洲一区二区三区影院| 亚洲精品黄色| 久久精品免费看| 亚洲欧美日韩精品一区二区| 猛男gaygay欧美视频| 国产精品理论片| 欧美不卡一卡二卡免费版| 国产精品视频九色porn| 亚洲国产高清一区| 好吊色欧美一区二区三区视频| 亚洲精品少妇网址| 亚洲精品在线看| 久久亚洲电影| 久久夜色精品国产| 国产日韩欧美电影在线观看| a91a精品视频在线观看| 一本色道久久加勒比88综合| 另类国产ts人妖高潮视频| 久久亚洲精选| 狠狠爱综合网| 久久精品国产一区二区三区| 西西人体一区二区| 欧美性大战xxxxx久久久| 亚洲人成在线播放| 亚洲精品偷拍| 欧美精品福利在线| 最新国产成人av网站网址麻豆| 亚洲第一久久影院| 免费在线看一区| 亚洲激情国产| 一区二区免费看| 欧美天堂亚洲电影院在线观看 | 久久久久一区二区| 国内综合精品午夜久久资源| 欧美一区不卡| 噜噜噜久久亚洲精品国产品小说| 国产一区在线播放| 欧美夫妇交换俱乐部在线观看| 国产欧美日韩一区二区三区| 亚洲欧美美女| 久久免费黄色| 亚洲国产清纯| 欧美日韩精品在线| 亚洲一区欧美| 久久综合免费视频影院| 亚洲国产日韩欧美在线图片| 欧美高清免费| 亚洲五月婷婷| 蜜桃精品久久久久久久免费影院| 亚洲欧美激情一区二区| 欧美四级剧情无删版影片| 亚洲午夜电影网| 久久国产精品一区二区三区| 国产一区二区精品久久91| 狼狼综合久久久久综合网| 亚洲精品麻豆| 亚洲欧美在线网| 在线观看国产精品网站| 欧美日韩二区三区| 久久不射2019中文字幕| 亚洲电影免费在线| 性久久久久久久久久久久| 亚洲盗摄视频| 国产精品一区二区久激情瑜伽| 久久久人成影片一区二区三区| 91久久久久久久久| 久久久精品久久久久| 91久久精品国产91久久性色| 国产精品av一区二区| 久久久久久色| 亚洲一区二区三区高清| 男女精品网站| 午夜一区在线| 亚洲另类一区二区| 国语自产精品视频在线看| 欧美日韩精品综合在线| 久久亚洲不卡| 午夜免费久久久久| 亚洲美女网站| 亚洲第一主播视频| 久久久午夜电影| 午夜精品久久| 99视频精品免费观看| 在线观看91精品国产麻豆| 国产精品亚洲综合久久| 欧美区在线播放| 女主播福利一区| 久久精品免视看| 欧美伊人久久久久久午夜久久久久 | 欧美电影电视剧在线观看| 欧美一区观看| 亚洲女与黑人做爰| 在线视频精品一区| 9久re热视频在线精品|