代码之家  ›  专栏  ›  技术社区  ›  Jothikumar Rathinamoorthy

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

  •  1
  • Jothikumar Rathinamoorthy  · 技术社区  · 13 年前

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

    1 回复  |  直到 13 年前
        1
  •  3
  •   Garrett Wollman    13 年前

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