我正在使用Rad Hat 8.0,试图对内核进行更改,我正处于编译阶段。我在include/linux中有一个头文件,其中定义了包装器函数,它们使用errno。我使用#include <errno.h>包含了errno.h。当我尝试编译时,它告诉我"errno.h没有这样的文件或目录“。当我尝试#include <linux/errno.h>时,它找到了它,但它抱怨我在使用之前没有声明变量errno。我查看了errno.h,它确实没有声明它,这让人困惑,因为我的印象是它就是在这里定义的。
我找错地方了吗?如何使用errno?
发布于 2009-11-12 05:59:36
对于内核代码,请参阅#include <linux/errno.h>。
errno的外部声明在#include <linux/unistd.h>中。
发布于 2012-10-04 06:45:36
根据this,当您返回负值时,会自动设置errno变量。
示例
asmlinkage long sys_foo() {
...
if(error)
return -(errorcode);
...
}在这种情况下,在用户空间中返回的结果将是-1,并且errno变量的值将为errorcode。
发布于 2009-11-12 05:59:14
errno在中定义为extern
/usr/src/lib/linux/errno.c你必须用你的编译这个文件
https://stackoverflow.com/questions/1718333
复制相似问题