2008年2月18日

NetBSD(i386)でsysarchを追加する。

NetBSD-2.1(i386版)で、sysarchを追加してユーザランドプロセスからカーネルを好き勝手に操作できるようにしてみる。sysarchについては、NetBSDのmanページを参照のこと。

まず、sysarchの番号を追加する。番号はカーネルソースコードの arch/i386/include/sysarch.h に定義されている。
例えば以下のように、"I386_TESTSYS"を追加する。
#define I386_TESTSYS

続いて、sysarchの実行コードを作成する。i386のsysarchコードは、カーネルソースコードの arch/i386/i386/sys_machdep.c に記述されている。このファイルの sys_sysarch() 関数内のswitch文がsysarch()の切り分けを行っている箇所なので、その部分に case文(追加したsysarch番号のI386_TESTSYS)を追加する。

以上で、カーネルの設定は完了。カーネルをコンパイルしなおせばOK

ユーザランドプログラムから追加したsysarchを参照できるようにするため、ヘッダファイルを /usr/include 配下に反映させることを忘れないこと!