1

プロセスの優先度の条件に応じて、0、1、2 などの値を返すシステム コールを実装しました。ファイルで実行しsyscall()ています。システム コールが 0 を返した場合、戻り値はsyscall()0 として取得されます。しかし、1 または 2 が返された場合、1 の場合は -1、その他の値の場合はシステム コール番号が取得されます。0 と -1 以外の値を返すことは可能ですか?

4

1 に答える 1

3

システム コールのカーネル実装は値を返さず、エラー コードを返します。関数の最初の引数は「構造体スレッド」であり、td->td_retval[0] を目的の戻り値に設定して、戻り値をユーザー空間に戻します。たとえば、sys/kern/kern_prot.c の getpid() の実装を参照してください。

于 2012-10-02T19:56:20.943 に答える