linux-2.6.33/__list_del()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#m62d0c0b]
#backlinks
*説明 [#x17af451]
-パス: [[linux-2.6.33/include/linux/list.h]]
-指定された要素に挟まれた要素全てを、リストから削除する。
--指定された要素は残り、間にある要素が全て削除される。
元のリストが、
,-------------------------,
|-> a <-> b <-> c <-> d <-|
であれば、
__list_del(b, d) を実行後は、
,-------------------,
|-> a <-> b <-> d <-|
となる。
--リストの要素が 1つでも動作する。
---b を削除したければ、__list_del(a, a) で削除可能である。
a は b の prev であり、next でもあるから。
--間に何も要素がなくても動作する。
空のリストに対しても動作する。
---特に何も起こらない。
**引数 [#vf05a208]
-struct list_head * prev
--削除したい要素の前にある要素を指定する。
--[[linux-2.6.33/list_head]]
-struct list_head * next
--削除したい要素の後ろにある要素を指定する。
**返り値 [#x61ee993]
-なし
**参考 [#v4d1ffd3]
*実装 [#jfd0f73e]
/*
* Delete a list entry by making the prev/next entries
* point to each other.
*
* This is only for internal list manipulation where we ...
* the prev/next entries already!
*/
static inline void __list_del(struct list_head * prev, s...
{
next->prev = prev;
prev->next = next;
-削除対象の全要素を挟む要素間で、ポインタを接続する。
仮に prev と next の間にある全要素
(=リストから削除しようとしている要素全て)
の名前を self とすると、
| prev | -(prev.next)-> | self | -(self.next)-> | |
| | <-(self.prev)- | | <-(next.prev)- | next |
を
| prev | -------------(prev.next)-------------> | |
| | <-------------(next.prev)------------- | next |
^ ^
| | self | ---(self.next)---|
`---(self.prev)--- | |
のように変更して、prev や next から self を参照できない...
これは self が複数となっても動作する。
}
*コメント [#qbe14560]
終了行:
*参照元 [#m62d0c0b]
#backlinks
*説明 [#x17af451]
-パス: [[linux-2.6.33/include/linux/list.h]]
-指定された要素に挟まれた要素全てを、リストから削除する。
--指定された要素は残り、間にある要素が全て削除される。
元のリストが、
,-------------------------,
|-> a <-> b <-> c <-> d <-|
であれば、
__list_del(b, d) を実行後は、
,-------------------,
|-> a <-> b <-> d <-|
となる。
--リストの要素が 1つでも動作する。
---b を削除したければ、__list_del(a, a) で削除可能である。
a は b の prev であり、next でもあるから。
--間に何も要素がなくても動作する。
空のリストに対しても動作する。
---特に何も起こらない。
**引数 [#vf05a208]
-struct list_head * prev
--削除したい要素の前にある要素を指定する。
--[[linux-2.6.33/list_head]]
-struct list_head * next
--削除したい要素の後ろにある要素を指定する。
**返り値 [#x61ee993]
-なし
**参考 [#v4d1ffd3]
*実装 [#jfd0f73e]
/*
* Delete a list entry by making the prev/next entries
* point to each other.
*
* This is only for internal list manipulation where we ...
* the prev/next entries already!
*/
static inline void __list_del(struct list_head * prev, s...
{
next->prev = prev;
prev->next = next;
-削除対象の全要素を挟む要素間で、ポインタを接続する。
仮に prev と next の間にある全要素
(=リストから削除しようとしている要素全て)
の名前を self とすると、
| prev | -(prev.next)-> | self | -(self.next)-> | |
| | <-(self.prev)- | | <-(next.prev)- | next |
を
| prev | -------------(prev.next)-------------> | |
| | <-------------(next.prev)------------- | next |
^ ^
| | self | ---(self.next)---|
`---(self.prev)--- | |
のように変更して、prev や next から self を参照できない...
これは self が複数となっても動作する。
}
*コメント [#qbe14560]
ページ名: