什么时候使用fcheck()或fcheck_files()?

时间:2015-08-28 07:01:31

标签: c linux linux-kernel kernel-module manpage

在Linux内核模块中,在按文件描述符计算绝对路径时,使用 fcheck() fcheck_files()。我没有获得有关这些功能的更多信息。我需要知道哪种功能适合哪种情况。当这些功能失败?哪里可以找到有关此类功能的文档?如上所述here

  

...要查找给定fd的文件结构,读者必须使用fcheck()或fcheck_files()API ....

但是没有提供关于何时以及为什么应该使用哪种功能的信息。

提前致谢!

1 个答案:

答案 0 :(得分:1)

fcheck()include/linux/fdtable.h, line 90中被定义为预处理器宏:

#define fcheck(fd)      fcheck_files(current->files, fd)

并且fcheck_files()被定义为include/linux/fdtable.h, line 77中的函数:

static inline struct file * fcheck_files(struct files_struct *files, unsigned int fd)
{
        struct file * file = NULL;
        struct fdtable *fdt = files_fdtable(files);

        if (fd < fdt->max_fds)
                file = rcu_dereference_check_fdtable(files, fdt->fd[fd]);
        return file;
}

它们不是两个功能,因此不需要混淆适合哪个功能。

fcheck()功能用于

  

检查指定的fd是否有打开的文件。