"'错误号'未申报"在编译Linux内核时

时间:2016-11-13 12:50:10

标签: compiler-errors linux-kernel operating-system kernel errno

我正在尝试编译并且我不断收到以下错误: enter image description here

我已经包含了asm-i386/errno.h一次但它没有用。我也试过包括linux/errno.h并且它没有工作以太。

我应该包含哪个文件?

1 个答案:

答案 0 :(得分:2)

Linux内核中没有errno变量:此变量仅存在于用户空间中。

如果内核函数想要报告错误并指定错误代码,它会将错误代码封装到返回值中。这种封装有3种可能性,取决于成功时返回的值类型:

  1. 成功时函数返回0,失败时返回错误代码
  2. 这种最常用的约定有时被称为0/-err

    1. 函数返回有效指针成功,表达式ERR_PTR(err)失败。
    2. 此表达式计算指针,指针永远不会指向真正的内核对象。即使NULL是有效结果,也可以使用此约定。

      1. 函数在成功时返回正整数,在失败时返回错误代码:+val/-err
      2. 如果0是有效结果,也可以使用此约定:+val/0/-err

        当用户空间库需要根据内核的请求设置errno时,它会检查系统调用的结果(这是对内核执行请求的唯一方法)。依赖于系统调用,使用1或3约定(任何系统调用的返回类型为long)。

        "设置"的示例用户空间的内核空间中的errno请参阅here