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

时间:2012-09-22 04:43:07

标签: unix freebsd system-calls

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

1 个答案:

答案 0 :(得分:3)

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