0

我正在研究内核 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”。

为什么?我哪里错了?

4

0 回答 0