最近、私が書いたシステムコールに関して、minix で非常に奇妙な問題に遭遇しています。基本的に、コードは main() 関数内から正常に実行され、呼び出しは本来の処理を行います。ただし、コードを関数に入れて main() 内からその関数を呼び出すと、失敗します。次に例を示します。
void do_foo()
{
message m;
_syscall(FS_PROC_NR, FOO, &m);
}
int main(int argc, char* argv[])
{
/* works */
message m;
_syscall(FS_PROC_NR, FOO, &m);
/* does not work */
do_foo();
}
コードから関数を呼び出すと、メイン関数にコードを記述した場合と同じように動作するはずです。ここで何が欠けていますか??