【问题标题】:Create, write, read file in proc.c XV6 OS在 proc.c XV6 OS 中创建、写入、读取文件
【发布时间】:2015-12-28 21:42:49
【问题描述】:

我想在 proc.c(内核模式)中创建一个文件并向其中写入一些内容,但提供的系统调用(打开)是用于 user.h 标头中的用户模式,我不能在 proc 中包含 user.h .c,在proc.c中有没有其他方法可以做到这一点?

【问题讨论】:

    标签: c xv6


    【解决方案1】:

    使用 sysfile.c 中函数 sys_open() 中的“open”系统调用代码,并自己分配“path”和“omode”变量。

    (如果您想避免代码重复,您可以编辑 sys_open 以使用“path”、“omode”变量调用另一个函数,并在 proc.c 中的代码中使用该函数)

    【讨论】:

    • 我看过这个(sys_open()),但正如你所说我不知道​​如何使用它,我也无法理解open()函数与它的关系......如果可能的话,请给我一个描述和一个例子......
    • 使用 open() 时,会进行系统调用,内核运行 sys_open()。要使用它,您可以将 sys_open() 的代码复制到 proc.c,并根据需要进行编辑
    • 但我认为我应该做一些类似 open 的事情,因为 sys_open() 代码很大程度上依赖于 sys_file.c 中的其他函数,你知道怎么做吗?
    • 您可以包含 sys_file.h(如果有的话),或者包含您需要的方法的文件 - 没关系,因为它们都是内核
    • 所以也许你可以包含 sys_file.c 包含的内容(这是为了更好地只找到其中​​需要的)
    【解决方案2】:

    你应该研究内核文件系统。 在那里你会看到相关的内核函数。

    具体来说,您需要createwriteiiput 函数。 您还需要begin_transcomnit_trans(因为您正在写作)。

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 2018-04-22
      • 1970-01-01
      • 2014-04-21
      • 2014-09-15
      • 2013-07-20
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多