gpt4 book ai didi

linux-kernel - 如何复制结构文件?

转载 作者:行者123 更新时间:2023-12-04 04:39:29 25 4
gpt4 key购买 nike

我正在将旧的Linux内核代码移植到较新的版本2.6.32。

有一部分复制文件描述符。这个想法是分配一个新的文件描述符和一个新的结构文件,并将它们与另一个 f_op 和一起使用,而结构文件的所有其他字段都与原始字段相同。

如何在现代内核中执行此操作?
我已经写了一个大概的实现,但是我不知道我应该调用file_get,path_get还是其他人使用计数器递增。

struct file * copy_file(const struct file * iOrig, int * oNewFd) {
if (!orig)
return 0;
*oNewFd = get_unused_fd();
if (*oNewFd < 0)
return 0;
struct file * rv = alloc_file(orig->f_path.mnt, orig->f_path.dentry, orig->f_path.mode, orig->f_op);
if (!rv)
goto free_fd;
fd_install(fd, rv);
return rv;
free_fd:
put_unused_fd(*oNewFd)
return 0;
}

P.S.实际上,不必复制所有原始文件。我只需要在用户空间中允许一组新的文件操作即可。因此,可以使用给定的 f_op 创建 当前拥有的新描述符。

最佳答案

path_get听起来不错。在http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/fs/pipe.c#L1046上查看示例,如果需要,您将能够在这里找到更多的裁判。

关于linux-kernel - 如何复制结构文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com