satsukiの日記: Linuxお勉強メモ
日記 by
satsuki
あるsk_buffをqueueに入れるとかするんだけど,事情があってそのあともちょっと使いたいなーって時の複製処理.
if (atomic_read(&skb->users) != 1) {
skb2 = skb_clone(skb);
} else {
skb2 = skb;
atomic_inc(&skb->users);
}
atomic_readとかatomic_incとかは,単に,今何人が同時に使ってますよとかそういうもので大した機能はない.
atomic_readは中身素通しのマクロ.atomic_setとかもあるが,それも単なる代入.
ただし,atomic_incとか,あとatomic_add等算術計算が必要なものは,アセンブラで記述するなど,各アーキテクチャにおいて最も早く処理が終るようになっている.
それはそうとして,何故単に
skb2 = skb_clone(skb);
しないのか?
BGM: SPARKLE-YUMEMITAATODE/GARNET CROW
Linuxお勉強メモ More ログイン