我正在研究内核linux 2.6.34.14。
我在struct file中添加了一个指向之前定义的struct的指针(在include / linux / fs.h中),这样:
struct session{
char *session_buffer;
loff_t session_dimension;
};
struct file {
struct session *sess_punt;
}
之后,我需要在open.c中分配我的struct并在dentry_open(fs / open.c)中执行。
使用这段代码我想说:如果在调用open时有一个特定的标志,那么在struct中分配struct和buffer。
if(f->f_flags & O_SESSION){
f->sess_punt = kmalloc(sizeof(struct session), GFP_KERNEL);
f->sess_punt -> session_buffer = kmalloc(MAX_BUFFER_SIZE, GFP_KERNEL);
//f->sess_punt -> session_dimension = 0;
}
else f->sess_punt = NULL;
问题如下:
我编译新内核,一切都很好。我尝试进入该内核但我收到消息“内核恐慌 - 没有同步:试图杀死init”。
为什么?我哪里错了?