使用C程序挂载文件系统

时间:2014-04-21 05:01:40

标签: mount linux-kernel gpio

在我的initramfs.cpio中,我只有这些目录:

root@localhost extract]# ls 
dev  init  tmp sys 

dev有控制台,sys是空的。

init是一个二进制文件,对应于我在Accessing GPIO after kernel boots中讨论过的程序。

现在在同一个GPIO程序中,我想编写代码来安装/ sys。我知道它可以使用mount:

挂载
mount -t sysfs none /sys

如何编写将实现上述代码的C程序。请注意,我没有文件系统; initramfs.cpio有空文件夹:/ sys,/ tmp。如果需要,我可以放更多的空文件夹。但是我不能把完整的文件系统。

我的主要意图 使用此program或其他方式访问GPIO,但不使用完整文件系统。 我不需要运行任何其他东西,但只想要GPIO访问(和LED闪烁)

1 个答案:

答案 0 :(得分:9)

您使用mount(2)系统调用。从联机帮助页:

  

概要

  #include <sys/mount.h>

  int mount(const char *source, const char *target,
            const char *filesystemtype, unsigned long mountflags,
            const void *data);

所以,在你的C代码中,它看起来像是:

#include <sys/mount.h>

/* ... */

void mount_sys() {
    if (0 != mount("none", "/sys", "sysfs", 0, "")) {
        /* handle error */
    }
}

(最后一个空字符串是你传递挂载选项的地方,但是AFAIK sysfs不会接受任何选项。)