- 论坛徽章:
- 2
|
目标:想在sk_buff结构体中增加一个 字段。
kernel 2.6.33.4
struct sk_buff
{
__u16 mac_len,
myheader_len, //myheader_len 为增加字段
hdr_len;
};
myheader_len 为增加字段
考虑到 skb是从两个高速缓存中分配的,增加了字段,应该相应增加分配区的大小,于是看了
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);
skbuff_fclone_cache = kmem_cache_create("skbuff_fclone_cache",
(2*sizeof(struct sk_buff)) +
sizeof(atomic_t),
0,
SLAB_HWCACHE_ALIGN|SLAB_PANIC,
NULL);
}
因为 两个缓存在分配时都是使用 sizeof(struct sk_buff)来计算大小,所以认为 源码仅为 sk_buff添加一字段时,sizeof(struct sk_buff) 会自动增大你的存储空间,应该没有问题的,但事实却是这样行不通。编译顺利通过,reboot现在内核后 就会死掉
出现下列错误
想问下大家 这样的思路 错在哪里了?先谢谢大家啦 |
|