2011-04-23 29 views
0

乾草傢伙!list_entry返回值

我正在更改Rat Hat OS上的內核代碼,我想使用宏「list entry」。 我找不到任何地方什麼是失敗的返回值。

如果列表爲空,它會返回什麼?或在任何其他情況下...

謝謝! Ami

回答

0

我們可以從兩個方面

1)獨立的單全局變量使用此LIST_HEAD,來保存列表的頭都

我們不能使用LIST_ENTRY此變量事件雖然有列表成員 在裏面。因爲這不是任何結構的一部分。

2)我們可以使用list_head作爲您的結構的成員,只要添加到列表中,您將爲此成員提供指向列表HEAD的指針 。

我們將使用LIST_ENTRY該成員上獲得,即使你 列表成員不屬於任何名單的一部分,你的結構 你可以得到結構(這與下一= NULL和私法= NULL初始化)沒有失敗的方法。

list_entry是簡單的container_of()我們使用它來獲取使用成員指針的結構指針。

1

如果列表爲空,它應該是未定義的。 (你正試圖解引用一個不在列表的元素類型結構中的列表指針)

一般來說,如果你必須直接使用list_entry,你首先需要檢查list_empty。這將驗證你的列表頭沒有指向自己。

否則堅持總是使用list_for_each宏,它將生成for循環你的元素。