minix でいくつかのカーネル コードを変更する宿題をしようとしていますが、これまでに見たことのない奇妙な問題が発生しています。
pm サーバーの alloc.c を変更しています (minix に詳しい方向け)。ファイルの先頭にグローバル変数を追加しました。
PUBLIC int logging = 0;
その後、カーネルに追加した関数の 1 つで変数を読み取ろうとしています。
PUBLIC int do_setalloc(void)
{
printf("logging = %i\n", logging");
return (OK);
}
次に、カーネル空間の外でこのコードを実行するテスト プログラムを作成します。
int main(void)
{
message m;
m.m1_i1 = 1;
m.m1_i2 = 1;
_syscall(MM,69,&m);
return 0;
}
これは、このコードが実行されたときの出力です。
logging = %i
Printf は実際には %i 書式設定を整数の実際の値に置き換えていません。私はここで髪を引き裂いています。この割り当ては間もなく行われます! ヘルプ!