mcrash

LINUX2.5における変更点

linux2.5におけるカーネル変更のうち、 mcrashに関係しているものを書きます。

一覧

このドキュメントの他のページは、Linux2.4向けに記載しています。

task_structとカーネルスタックの分離

従来task_structとカーネルスタックは連続した8KBに割り当てられていましたが、 Linux2.5では のようになっています。
このため、currentマクロも変更になっています。 また、従来のinit_task_unionがinit_taskとinit_thread_unionになっています。
linux/include/asm-i386/thread_info.h
linux/include/asm-i386/current.h

ジェネリックinodeとファイルシステム依存部の分離

従来 struct inode の中ににext2やnfsやその他諸々のファイルシステム用の 情報がunionとして含まれていましたが、 それらはすべて無くなり void *generic_ip だけ残りました。
linux/include/linux/fs.h

pageのハッシュ削除

struct page のハッシュテーブル (page_hash_table) が無くなりました。 その他、virtualが無くなるなど struct page のサイズをできるだけ小さくする試みが行われているようです。
linux/include/linux/mm.h

buffer_headとbio

block層のインターフェースが従来の buffer_head から bio に変更になりました。 これについてはネット上でもいろいろ資料があるようですね。 ただしmcrashまだ対応していません。
linux/include/linux/bio.h
linux/include/linux/buffer_head.h

namespaceとvfsmount

struct vfsmountのリストであるグローバル変数vfsmntlistが無くなりました。 代わりに struct namespace からリストされているようです。 また namespace は task_struct からポイントされています。
これはlinux-2.4.19にもbackportされるようです。
linux/include/linux/fs.h
linux/include/linux/namespace.h
linux/include/linux/sched.h

dev_tとkdev_t

kdev_tは メジャー12ビット、マイナ20ビットになるはず(?)ですが、 結局linux2.5.29ではまだ 8+8ビット のようです。
linux/include/linux/kdev_t.h

これ以降も2.6までに非常に沢山の変更が続くのですが、メモしきれませんでした。 残念。
mcrash, Copyright (C) 2002,2003 ASANO Masahiro