Unix 将系统调用的返回值传递给freebsd中的用户进程

Unix 将系统调用的返回值传递给freebsd中的用户进程,unix,freebsd,system-calls,Unix,Freebsd,System Calls,我实现了一个系统调用,它根据进程优先级中的某些条件返回0、1和2等值。我正在文件中执行syscall()。当系统调用返回0时,我得到的syscall()的返回值为0。但是,当它返回1或2时,我得到-1表示1,系统调用号表示任何其他值。请告诉我,是否可以返回0和-1之外的值。系统调用的内核实现不返回值,而是返回错误代码。函数的第一个参数是“struct thread”,通过将td->td_retval[0]设置为所需的返回值,将返回值传递回userspace。例如,请参见sys/kern/kern

我实现了一个系统调用,它根据进程优先级中的某些条件返回0、1和2等值。我正在文件中执行
syscall()
。当系统调用返回0时,我得到的
syscall()
的返回值为0。但是,当它返回1或2时,我得到-1表示1,系统调用号表示任何其他值。请告诉我,是否可以返回0和-1之外的值。

系统调用的内核实现不返回值,而是返回错误代码。函数的第一个参数是“struct thread”,通过将td->td_retval[0]设置为所需的返回值,将返回值传递回userspace。例如,请参见sys/kern/kern_prot.c中getpid()的实现