gpt4 book ai didi

pwd - 为什么 iget() 隐藏在 xv6 中

转载 作者:行者123 更新时间:2023-12-03 17:18:41 24 4
gpt4 key购买 nike

我在玩 xv6 ,Unix 版本 6 的现代实现。

对于我的第一次 hack,我想实现简单的 getcwd syscall,但我对应该使用哪个抽象级别有点迷茫。

  • 我应该使用 struct file界面?
  • 或者也许是 struct inode界面?
  • 重要的是,它似乎甚至可以纯粹在用户空间中实现。

  • 我开始用 struct inode 实现它操纵。我天真的想法是检索 proc->cwd ,然后 readi()它的第二个条目 ( .. ),扫描它以检索我以前的 inum ,以此类推,直到我找到根。

    看起来性能不高,但这适合第一次破解。

    我的问题是我需要 fs.c:iget()检索 struct inode来自 inum s 我进入 dirent s。我注意到 iget()fs.c 中是静态的并且未在 defs.h 中声明这让我有点恼火,但我找不到原因。

    所以,这是我的问题。为什么会这样 iget()是故意对内核的其余部分隐藏的吗?

    最佳答案

    在我看来,他们只是务实。

    iget 仅由目录操作例程使用。
    目录操作例程在 fs.c 中。

    至于 getcwd 实现。
    如果您遵循 chdir 系统调用代码会好得多。
    路径就在那里。
    您只需要存储它,可能存储在 proc 结构中的一个新字段中。
    当然,如果给定的路径是相对的,则应该将其附加到当前存储的路径中。

    关于pwd - 为什么 iget() 隐藏在 xv6 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204958/

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