我已经实现了一个系统调用,它根据进程优先级中的某些条件返回0,1和2等值。我正在文件中执行syscall()
。当系统调用返回0时,我得到syscall()
的返回值为0.但是,当它返回1或2时,我得到-1表示1,系统调用号表示任何其他值。请告诉我,是否可以返回0和-1之间的值。
答案 0 :(得分:3)
系统调用的内核实现不返回值,它返回错误代码。函数的第一个参数是“struct thread”,通过将td-> td_retval [0]设置为所需的返回值,将返回值传递回用户空间。例如,参见sys / kern / kern_prot.c中getpid()的实现。