当前位置:  开发笔记 > 运维 > 正文

Linux内核模块中的文件I/O.

如何解决《Linux内核模块中的文件I/O.》经验,为你挑选了2个好方法。

我正在编写一个需要打开和读取文件的Linux内核模块.实现这一目标的最佳方法是什么?



1> MBCook..:

我可以问你为什么要打开文件?

我喜欢关注Linux开发(出于好奇,我不是内核开发人员,我做Java),我之前看过这个问题的讨论.我能够找到关于此的LKML消息,基本上提到它通常是一个坏主意.我几乎肯定LWN在去年覆盖了它,但我很难找到这篇文章.

如果这是一个私有模块(比如某些自定义硬件而且模块不会被分发),那么你可以这样做,但我的印象是,如果你要将你的代码提交到主线那么它可能不会被接受.

Evan Teran提到了sysfs,这对我来说似乎是一个好主意.如果你真的需要做更难的定制的东西,你可以随时制作新的ioctrls.

编辑:

好的,我找到了我要找的文章,它来自Linux Journal.它解释了为什么做这种东西通常是一个坏主意,然后继续告诉你究竟该怎么做.



2> Evan Teran..:

假设您可以获得指向open/ read/ close系统调用的relavent函数指针的指针,您可以执行以下操作:

mm_segment_t fs = get_fs();
set_fs(KERNEL_DS);

fd = (*syscall_open)(file, flags, mode);
if(fd != -1) {
    (*syscall_read)(fd, buf, size);
    (*syscall_close)(fd);
}
set_fs(fs);

你需要创建syscall_*我已经展示的" "函数指针.我相信有更好的方法,但我相信这会有效.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有