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