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 回答