在我的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闪烁)
答案 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不会接受任何选项。)