我正在研究内核 linux 2.6.34.14。
我在结构文件中(在 include/linux/fs.h 中)添加了一个指向之前定义的结构的指针,以这种方式:
struct session{
char *session_buffer;
loff_t session_dimension;
};
struct file {
struct session *sess_punt;
}
之后,我需要在 open.c 中分配我的结构并在 dentry_open (fs/open.c) 中执行此操作。
用这段代码我想说:如果调用 open 时有一个特定的标志,那么在结构中分配结构和缓冲区。
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”。
为什么?我哪里错了?