|
发表于 2006-12-25 22:05:47
|
显示全部楼层
先回答一部分。
在ddd下用命令:
# p sizeof(struct sk_buff)
显示结果为146个字节。
skbuff_head_cache和skbuff_fclone_cache都是slab的缓存,见/net/core/skbuff.c:
void __init skb_init(void)
{
skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
sizeof(struct sk_buff),
0,
SLAB_HWCACHE_ALIGN|SLAB_PANIC,
NULL, NULL);
skbuff_fclone_cache = kmem_cache_create("skbuff_fclone_cache",
(2*sizeof(struct sk_buff)) +
sizeof(atomic_t),
0,
SLAB_HWCACHE_ALIGN|SLAB_PANIC,
NULL, NULL);
}
这2个SLAB的缓存是为申请sk_buff用的。说可以申请任意个,是根据SLAB的特点说的,用完了还,然后再申请,好像可以申请任意个。 |
|