亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2308 | 回復(fù): 4
打印 上一主題 下一主題

TCP協(xié)議棧提前拷貝到用戶緩沖區(qū)的問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-02-27 09:55 |只看該作者 |倒序?yàn)g覽
本帖最后由 peimichael 于 2012-02-27 09:55 編輯

最近看TCP協(xié)議棧時(shí)在tcp_rcv_established函數(shù)里看到這么一段
  1. if ([color=Red]tp->ucopy.task == current[/color] &&
  2.     sock_owned_by_user(sk) && !copied_early) {
  3.         __set_current_state(TASK_RUNNING);

  4.         /*tcp_copy_to_iovec返回0為成功*/
  5.         if (!tcp_copy_to_iovec(sk, skb, tcp_header_len))
  6.                 eaten = 1;
  7. }
復(fù)制代碼
上面紅字部分不明白有什么用,為什么一定要保證ucopy.task==current?
實(shí)際上一般進(jìn)程調(diào)用recv阻塞后不就切換走了?上面這個(gè)條件如何滿足?
我覺得可能是在進(jìn)程上下文處理prequeue或者backlog時(shí)才會(huì)進(jìn)入這個(gè)條件,但如果是這種情況,似乎又不需要__set_current_state(TASK_RUNNING)這句話了。
特來求助。

多謝!

論壇徽章:
6
金牛座
日期:2013-10-08 10:19:10技術(shù)圖書徽章
日期:2013-10-14 16:24:09CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34獅子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亞洲杯之阿聯(lián)酋
日期:2015-05-09 14:36:15
2 [報(bào)告]
發(fā)表于 2012-02-27 12:08 |只看該作者
本帖最后由 瀚海書香 于 2012-02-27 13:27 編輯

回復(fù) 1# peimichael
剛才看了下代碼,以前沒注意個(gè)這個(gè)地方。佩服樓主看代碼這么仔細(xì)啊。。。

貌似流程是:current系統(tǒng)調(diào)用recv-->軟中斷打斷-->tcp_rcv_established,但是好像current的狀態(tài)是RUNNING的
??


   

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2012-02-27 12:14 |只看該作者
回復(fù) 2# 瀚海書香


    tcp_recvmsg是用戶進(jìn)程recv系統(tǒng)調(diào)用調(diào)到的函數(shù)啊,為啥會(huì)在軟中斷被調(diào)用?樓上是指“tcp_v4_rcv”嗎?

論壇徽章:
6
金牛座
日期:2013-10-08 10:19:10技術(shù)圖書徽章
日期:2013-10-14 16:24:09CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34獅子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亞洲杯之阿聯(lián)酋
日期:2015-05-09 14:36:15
4 [報(bào)告]
發(fā)表于 2012-02-27 13:27 |只看該作者
回復(fù) 3# peimichael
已經(jīng)改過來了

   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2012-02-27 13:45 |只看該作者
current系統(tǒng)調(diào)用recv-->軟中斷打斷-->tcp_rcv_established,但是好像current的狀態(tài)是RUNNING的

我就是覺得奇怪,系統(tǒng)調(diào)用recv之后不是就進(jìn)入sleep狀態(tài)了嗎,如果說必須是"在進(jìn)入recv后,進(jìn)程切換之前"正好被軟中斷打斷,這個(gè)概率是不是小了點(diǎn)。
還有就算等待在socket上的進(jìn)程不是current進(jìn)程會(huì)有什么影響嗎?為啥一定要是current?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP