【发布时间】:2012-09-14 11:33:52
【问题描述】:
我已经实现了一个系统调用,它根据进程优先级中的某些条件返回 0、1 和 2 等值。我正在文件中执行syscall()。当系统调用返回 0 时,我得到 syscall() 的返回值为 0。但是,当它返回 1 或 2 时,我得到 1 的 -1 和任何其他值的系统调用号。请告诉我,是否可以返回 0 和 -1 以外的值。
【问题讨论】:
标签: unix freebsd system-calls
我已经实现了一个系统调用,它根据进程优先级中的某些条件返回 0、1 和 2 等值。我正在文件中执行syscall()。当系统调用返回 0 时,我得到 syscall() 的返回值为 0。但是,当它返回 1 或 2 时,我得到 1 的 -1 和任何其他值的系统调用号。请告诉我,是否可以返回 0 和 -1 以外的值。
【问题讨论】:
标签: unix freebsd system-calls
系统调用的内核实现不返回值,它返回错误代码。您的函数的第一个参数是“结构线程”,您可以通过将 td->td_retval[0] 设置为所需的返回值将返回值传递回用户空间。例如,参见 sys/kern/kern_prot.c 中 getpid() 的实现。
【讨论】: