【问题标题】:Passing return values from a system call to user process in freebsd将系统调用的返回值传递给freebsd中的用户进程
【发布时间】:2012-09-14 11:33:52
【问题描述】:

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

【问题讨论】:

    标签: unix freebsd system-calls


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 2016-03-28
      • 2011-08-11
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多