内核初始化的时候skb_init调用kmem_cache_create来创建"skbuff_head_cache"和"skbuff_fclone_cache"这两个memory cache,其执行的是mm/slub.c中定义的kmem_cache_create函数,看看该函数的实现就清楚了(其先通过find_mergeable看看有无现成的可以结构)。 内核相关实现在kmem_cache_create->sysfs_slab_alias这个函数中...
skbuff_head_cache = kmem_cache_create_usercopy("skbuff_head_cache", sizeof(struct sk_buff), 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, offsetof(struct sk_buff, cb), sizeof_field(struct sk_buff, cb), NULL); skbuff_fclone_cache = kmem_cache_create("skbuff_fclone_cache", sizeof(struct sk_buff...