我正在尝试编译,但不断出现以下错误:
enter image description here
我已经包含了asm-i386/errno.h
一次,但是没有用。我也试过包括linux/errno.h
,它不工作以太。
我应该包含什么文件?
最佳答案
Linux内核中没有errno
变量:此变量仅存在于用户空间中。
如果内核函数想要报告错误并指定错误代码,则它将错误代码封装到返回值中。这种封装有3种可能性,取决于成功返回的值类型:
有时将此最常用的约定称为
0/-err
。ERR_PTR(err)
表达式。 该表达式的计算结果是指针,指针永远不能指向实际的内核对象。即使NULL是有效的结果,也可以使用此约定。
+val/-err
。 如果有效结果为0,则也可以使用以下约定:
+val/0/-err
。当用户空间库需要根据内核的请求设置errno时,它将检查系统调用的结果(这是对内核执行请求的唯一方法)。根据syscall,使用1或3约定(任何系统调用的返回类型为
long
)。在内核空间中为用户空间“设置”
errno
的示例,请参见here。
关于compiler-errors - “' errno ' undeclared”编译Linux内核时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40574018/