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

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

Chinaunix

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

[內(nèi)核入門] 求教list_for_each_entry的問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-07-31 15:25 |只看該作者 |倒序?yàn)g覽
在/kernel/exit.c 中,會(huì)有l(wèi)ist_for_each_entry(p, &father->children, sibling)


446 #define list_for_each_entry(pos, head, member)              \                       
447     for (pos = list_first_entry(head, typeof(*pos), member);    \                  
448          &pos->member != (head);                    \                              
449          pos = list_next_entry(pos, member))


362 #define list_first_entry(ptr, type, member) \
363     list_entry((ptr)->next, type, member)


這里的ptr和(ptr)->next是task_struct實(shí)例中的children類型,而member是sibling類型,類型不匹配?
小弟愚鈍,請(qǐng)高手指點(diǎn)!

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
2 [報(bào)告]
發(fā)表于 2015-07-31 19:47 |只看該作者
這是宏定義,不是函數(shù)原型。

head期望是一個(gè)list_head的指針(struct list_head *),

member既不是類型,也不是變量,而是結(jié)構(gòu)的成員名字/字段(struct filed name)。
它用來(lái)說(shuō)明,鏈表里的list_head,是【內(nèi)嵌】在什么【結(jié)構(gòu)(類型)】里的哪個(gè)【字段】。
實(shí)際上還需要類型信息,這里通過(guò)typeof(*pos)間接得到。
也就是說(shuō),是task_struct的sibling字段。

在代碼的其它地方,應(yīng)該有類似list_add(&p->sibling, &father->childern)的操作。

評(píng)分

參與人數(shù) 1可用積分 +6 收起 理由
Godbach + 6 贊一個(gè)!

查看全部評(píng)分

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2015-08-01 12:00 |只看該作者
這是linux內(nèi)核鏈表。include/linux/list.h

論壇徽章:
2
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-19 06:20:002015亞冠之本尤德科
日期:2015-08-31 23:24:47
4 [報(bào)告]
發(fā)表于 2015-08-01 15:54 |只看該作者
children和sibling的類型是一樣的,struct list_head,這里就是為了把相關(guān)的關(guān)聯(lián)起來(lái)

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2015-08-03 14:17 |只看該作者
本帖最后由 liglei 于 2015-08-03 14:18 編輯

回復(fù) 2# nswcfd

還是沒太明白,在linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)第三版中,有這樣的一段:

同樣,也可以按以下的方式依次訪問(wèn)子進(jìn)程:
  1. struct task_struct *task:
  2. struct list_head *list;

  3. list_for_each(list, &current->children) {
  4.         task = list_entry(list, struct task_struct, siblling);
  5.         /*task 現(xiàn)在指向當(dāng)前的某個(gè)子進(jìn)程*/
  6. }
復(fù)制代碼
這里邊兒的list,是當(dāng)前進(jìn)程子進(jìn)程的鏈表頭,而sibling是兄弟進(jìn)程的字段,兩個(gè)進(jìn)程的類型雖然一樣,但是并不是進(jìn)程描述符里的相同字段吧?

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
6 [報(bào)告]
發(fā)表于 2015-08-04 15:05 |只看該作者
回復(fù) 5# liglei

是的,不是相同字段。
children的角色是表頭,sibling的角色是鏈表中的節(jié)點(diǎn)。

A是父進(jìn)程,B/C是A的子進(jìn)程。
A的children跟B的sibling、C的sibling串在一起。
以上代碼就是從A的children開啟,遍歷B和C的過(guò)程。


   

評(píng)分

參與人數(shù) 1信譽(yù)積分 +10 收起 理由
liglei + 10 解釋相當(dāng)清晰,非常感謝!

查看全部評(píng)分

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2015-08-06 16:33 |只看該作者
回復(fù) 5# liglei
一個(gè)是list_for_each(pos,head),其中pos為struct list_head{}類型的指針變量;
一個(gè)是list_for_each_entry(pos, head, member),其中pos為宿主結(jié)構(gòu)體的指針變量;
兩個(gè)是不一樣。

如果看完博客里的兩篇文章還不明白。。。。。你就過(guò)來(lái)掐死我吧

PS:居然說(shuō)我沒有發(fā)表URL鏈接的權(quán)限,什么鬼??  管理員。


   

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
8 [報(bào)告]
發(fā)表于 2015-08-06 16:54 |只看該作者
回復(fù) 7# wjlkoorey258

什么情況? 帶 URL 的帖子不讓發(fā)?


   

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2015-08-07 09:26 |只看該作者
回復(fù) 8# Godbach


    說(shuō)是我沒有權(quán)限發(fā)布帶URL的回復(fù)

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
10 [報(bào)告]
發(fā)表于 2015-08-07 09:50 |只看該作者
回復(fù) 9# wjlkoorey258

去站務(wù)發(fā)帖問(wèn)一下吧。

   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(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ū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP