我正在尝试编译并且我不断收到以下错误: enter image description here
我已经包含了asm-i386/errno.h
一次但它没有用。我也试过包括linux/errno.h
并且它没有工作以太。
我应该包含哪个文件?
答案 0 :(得分:2)
Linux内核中没有errno
变量:此变量仅存在于用户空间中。
如果内核函数想要报告错误并指定错误代码,它会将错误代码封装到返回值中。这种封装有3种可能性,取决于成功时返回的值类型:
这种最常用的约定有时被称为0/-err
。
ERR_PTR(err)
失败。此表达式计算指针,指针永远不会指向真正的内核对象。即使NULL是有效结果,也可以使用此约定。
+val/-err
。如果0是有效结果,也可以使用此约定:+val/0/-err
。
当用户空间库需要根据内核的请求设置errno时,它会检查系统调用的结果(这是对内核执行请求的唯一方法)。依赖于系统调用,使用1或3约定(任何系统调用的返回类型为long
)。
"设置"的示例用户空间的内核空间中的errno
请参阅here。