我正在使用Rad Hat 8.0,试图对内核进行更改,而我正处于编译阶段。
我在include / linux中有一个标题,我在其中定义了包装函数,并且它们使用了errno。我使用了errno.h
#include <errno.h>
。
当我尝试编译时,它告诉我“errno.h没有这样的文件或目录”。当我尝试
#include <linux/errno.h>
它发现它但是抱怨我在使用之前没有声明errno变量。
我看了errno.h并且它确实没有声明它,这令人困惑,因为我的印象是这是它定义的地方。
我找错了地方吗?我如何利用errno?
答案 0 :(得分:2)
对于内核代码#include <linux/errno.h>
。
errno
的外部声明位于#include <linux/unistd.h>
。
答案 1 :(得分:1)
根据this,当您返回负值时,errno
变量会自动设置。
示例强>:
asmlinkage long sys_foo() {
...
if(error)
return -(errorcode);
...
}
在这种情况下,用户空间中的返回结果将为-1
,而errno
变量的值为errorcode
。
答案 2 :(得分:0)
errno被定义为
中的extern/usr/src/lib/linux/errno.c
你必须用你的
编译这个文件