Linux filp_open错误号定义

Linux filp_open error number definitions

我对filp_open函数有疑问:

我可以从IS_ERR函数获取错误号,但是我不理解错误号的含义。

在哪里可以找到filp_open错误号定义?


您不应在内核模式下使用filp_open读取/写入文件。 出于(显而易见的)安全原因。 其他原因可以在此答案和此答案中找到(摘自该评论)。 官方文档还建议不要使用flp_open

This is the helper to open a file from kernelspace if you really have to. But in generally you should not do this, so please move along, nothing to see here..

错误代码定义

内核在内核空间和用户空间使用相同的错误号(errno)。 因此,正如OmnipotentEntity指出的那样,您可以看到man errno作为错误一般含义的参考。

查看filp_open的实际实现及其可能的错误源(例如file_open_namebuild_open_flags)也很有帮助。

请注意,IS_ERR不会返回错误,而仅返回所提供的指针是否为错误值。 如果IS_ERR为true,则必须使用PTR_ERR从指针中检索错误值。 例:

1
2
3
4
5
6
fptr = filp_open(...)

if (IS_ERR(fptr)) {
    printk("%d\
", PTR_ERR(fptr));
}