色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

sk_buff內(nèi)存空間布局情況與相關(guān)操作(一)

麥辣雞腿堡 ? 來源:技術(shù)簡(jiǎn)說 ? 作者:董旭 ? 2023-07-30 16:43 ? 次閱讀

套接字?jǐn)?shù)據(jù)緩存(socket buffer)在Linux內(nèi)核中表示為:struct sk_buff,是Linux內(nèi)核中數(shù)據(jù)包管理的基本單元,主要包含兩個(gè)部分,其一:管理數(shù)據(jù),即數(shù)據(jù)包的管理信息;其二:報(bào)文數(shù)據(jù),保存了實(shí)際網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù),在內(nèi)核協(xié)議棧起承上啟下的作用,也有很多值得關(guān)注的sk_buff操作。

1、sk_buff四大指針與相關(guān)操作
**分配初始化:**struct sk_buff中四個(gè)指針都指向數(shù)據(jù)區(qū),分別是head、data、tail、end,剛剛分配出來的sk_buff會(huì)立馬進(jìn)行四大指針的初始操作。

分配sk_buff如下所示:

struct sk_buff *buff;
 buff = sk_stream_alloc_skb(sk, 0, sk- >sk_allocation, true);

sk_stream_alloc_skb最終調(diào)用__alloc_skb函數(shù)進(jìn)行內(nèi)存分配,分配skb后,進(jìn)行四大指針的初始化操作:

struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
       int flags, int node)
{
 struct sk_buff *skb;
 skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node)
 skb- >head = data;
 skb- >data = data;
 skb_reset_tail_pointer(skb);
 skb- >end = skb- >tail + size;
}

其中skb_reset_tail_pointer(skb):

static inline void skb_reset_tail_pointer(struct sk_buff *skb)
{
 skb- >tail = skb- >data;
}

最終四大指針初始化為以下圖所示:

圖片

此時(shí)head、data、tail三個(gè)指針指向一起,end指向數(shù)據(jù)緩沖區(qū)的尾部。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5103

    文章

    19268

    瀏覽量

    310027
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1391

    瀏覽量

    40602
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11373

    瀏覽量

    211298
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3081

    瀏覽量

    74595
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux sk_buff四大指針與相關(guān)操作

     在以上文章中,沒有分析過Linux內(nèi)核網(wǎng)絡(luò)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)-套接字?jǐn)?shù)據(jù)緩存struct sk_buff,本文將第次分享到sk_buff,但鑒于其在內(nèi)核網(wǎng)絡(luò)中些復(fù)雜
    發(fā)表于 10-13 17:23 ?4875次閱讀
    Linux <b class='flag-5'>sk_buff</b>四大指針與<b class='flag-5'>相關(guān)</b><b class='flag-5'>操作</b>

    Linux內(nèi)存點(diǎn)滴 用戶進(jìn)程內(nèi)存空間

    文件VM分配與釋放“內(nèi)存總是被進(jìn)程占用”,這句話換過來可以這么理解:進(jìn)程總是需要內(nèi)存。當(dāng)fork()或者exec()個(gè)進(jìn)程的時(shí)候,系統(tǒng)內(nèi)核就會(huì)分配定量的VM給進(jìn)程,作為進(jìn)程的
    發(fā)表于 08-14 16:23

    DM8127使用SWOSD_TI_alloc()分配內(nèi)存空間怎么加大?

    DM8127使用SWOSD_TI_alloc()分配內(nèi)存空間不夠,請(qǐng)問在什么文件里怎樣修改加大內(nèi)存空間???
    發(fā)表于 04-16 10:56

    stm32 使用u*** host庫(kù)占用內(nèi)存空間很大!!!

    如何解決stm32 使用u*** host庫(kù)占用內(nèi)存空間很大的問題呢???
    發(fā)表于 01-22 16:44

    ARM32 Linux的內(nèi)存布局

    看我們實(shí)際上內(nèi)存布局是怎么樣的?Linux內(nèi)核在啟動(dòng)時(shí),會(huì)打印出內(nèi)核內(nèi)存空間布局圖,下面是ARM IMX6平臺(tái)打印出來的內(nèi)存空間布局圖這部
    發(fā)表于 04-24 14:20

    RTThread的動(dòng)態(tài)內(nèi)存空間該如何去分配呢

    關(guān)于rtt的動(dòng)態(tài)內(nèi)存空間分配,想問下以下我的幾點(diǎn)理解是對(duì)的嗎1、我看RTT NANO和MASTER版本的動(dòng)態(tài)內(nèi)存分配好像不太樣,我的理解是MASTER版本的動(dòng)態(tài)
    發(fā)表于 08-31 14:34

    MCU中怎么申請(qǐng)段固定地址的內(nèi)存空間

    MCU中怎么申請(qǐng)段固定地址的內(nèi)存空間
    發(fā)表于 10-09 07:35

    freertos怎么釋放任務(wù)的內(nèi)存空間

    freertos怎么釋放任務(wù)的內(nèi)存空間
    發(fā)表于 10-12 07:20

    Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序

    當(dāng)要發(fā)送數(shù)據(jù)包的時(shí)候,內(nèi)核必須建立個(gè)包含傳輸數(shù)據(jù)的sk_buff,然后將sk_buff交給下層,各層在sk_buff遞交給下層,各層在
    發(fā)表于 05-10 11:15 ?1870次閱讀

    如何讓你的手機(jī)省出內(nèi)存空間

    大家都知道,手機(jī)使用久了就會(huì)變得很卡頓,除了手機(jī)本身“老化”之外,還有個(gè)重要的原因就是內(nèi)存堆積的太多了。事實(shí)上占用手機(jī)內(nèi)存的無非就是照片、視頻、微信等等,如果好好處理下這幾個(gè)方面的
    的頭像 發(fā)表于 02-13 14:07 ?4407次閱讀

    網(wǎng)卡的Ring Buffer詳解

    DMA 將 NIC 接收的數(shù)據(jù)包逐個(gè)寫入 sk_buff個(gè)數(shù)據(jù)包可能占用多個(gè) sk_buff , sk_buff 讀寫順序遵循FIFO(先入先出)原則。
    的頭像 發(fā)表于 03-17 14:25 ?1654次閱讀

    網(wǎng)卡的Ring Buffer詳解

    DMA 將 NIC 接收的數(shù)據(jù)包逐個(gè)寫入 sk_buff個(gè)數(shù)據(jù)包可能占用多個(gè) sk_buff , sk_buff 讀寫順序遵循FIFO(先入先出)原則。
    的頭像 發(fā)表于 04-04 09:15 ?1267次閱讀

    sk_buff內(nèi)存空間布局情況相關(guān)操作(二)

    操作tailroom中用戶數(shù)據(jù)塊區(qū)域:skb_put用于修改指向數(shù)據(jù)區(qū)末尾的指針tail: void *skb_put( struct sk_buff *skb, unsigned int len
    的頭像 發(fā)表于 07-30 16:47 ?834次閱讀
    <b class='flag-5'>sk_buff</b><b class='flag-5'>內(nèi)存空間布局</b><b class='flag-5'>情況</b>與<b class='flag-5'>相關(guān)</b><b class='flag-5'>操作</b>(二)

    sk_buff內(nèi)存空間布局情況相關(guān)操作(三)

    2、非線性區(qū)域 在1、中,可以看到每張sk_buff的圖: 在end指針緊挨著個(gè)非線性區(qū)域 ; 在struct sk_buff中沒有指向skb_shared_info結(jié)構(gòu)的指針,利用end指針
    的頭像 發(fā)表于 07-30 16:48 ?1366次閱讀
    <b class='flag-5'>sk_buff</b><b class='flag-5'>內(nèi)存空間布局</b><b class='flag-5'>情況</b>與<b class='flag-5'>相關(guān)</b><b class='flag-5'>操作</b>(三)

    淺析新能源電動(dòng)汽車充電樁空間布局優(yōu)化研究

    新能源汽車充電樁空間布局優(yōu)化研究是個(gè)復(fù)雜而重要的問題,要以用戶實(shí)際需求為出發(fā)點(diǎn),需要綜合考慮充電樁的數(shù)量和分布、供電能力和供電網(wǎng)絡(luò)的可靠性以及充電樁的建設(shè)和運(yùn)營(yíng)管理等因素.通過優(yōu)化充電樁的空間布局,可以提高新能源汽車的充電便利
    的頭像 發(fā)表于 12-17 09:36 ?568次閱讀
    淺析新能源電動(dòng)汽車充電樁<b class='flag-5'>空間布局</b>優(yōu)化研究
    主站蜘蛛池模板: 中国老太性色xxxxxhd | 在线免费观看国产视频 | 日日撸影院在线 | 精品国产在线观看福利 | 人妻中文字幕无码系列 | 国产一区免费在线观看 | 公粗挺进了我的密道在线播放贝壳 | 被公疯狂玩弄的漂亮人妻 | 欧美亚洲国产免费高清视频 | 狠狠色狠狠色综合日日92 | 国产强奷伦奷片 | 最新国产在线视频在线 | 亚洲 欧美 日韩 卡通 另类 | 亚洲青青青网伊人精品 | 精品国产自在天天线2019 | 啪啪漫画无遮挡全彩h网站 啪啪漫画无遮挡全彩h同人 | 高清一区二区亚洲欧美日韩 | 成人在线高清不卡免费视频 | 久久精品国产亚洲AV久五月天 | 日本福利片午夜免费观着 | 99热这里只有的精品 | 超碰日韩人妻高清视频 | 琉璃美人煞在线观看 | 亚洲精品久久久久久偷窥 | 我要女人的全黄录像 | 久久精品视频uu | 成人影片下载网站 | 99国产精品久久久久久久日本竹 | 亚洲乱码中文字幕久久孕妇黑人 | 99国产精品综合AV无码 | 狠狠躁日日躁人人爽 | 在线视频免费国产成人 | 久久久久久91香蕉国产 | 成人精品视频在线观看播放 | 国产99热在线观看 | 亚洲欧洲日本天天堂在线观看 | 日韩一区二区三区免费体验 | 亚洲日韩KKK444KKK聚色 | 日本成熟bbxxxxxxxx | 国产一区二区三区在线看片 | 亚洲 国产 日韩 欧美 在线 |