首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Linux内核模块中的I / O文件?

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

Stack Overflow用户
提问于 2017-12-29 03:59:25
回答 5查看 0关注 0票数 0

我正在编写一个需要打开和读取文件的Linux内核模块。怎么做?

EN

回答 5

Stack Overflow用户

发布于 2017-12-29 09:52:05

你为什么要打开一个文件?

如果这是一个私人模块(就像一些自定义的硬件和模块将不会分发),那么你可以做到这一点,但我的印象是,如果你要提交你的代码到主线,那么它可能不被接受。s。

票数 0
EN

Stack Overflow用户

发布于 2017-12-29 10:33:52

假设你可以得到指针指向relavent函数指针到open/ read/ close系统调用,你可以这样做:

代码语言:javascript
复制
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_*我已经显示的函数指针。

票数 0
EN

Stack Overflow用户

发布于 2017-12-29 11:45:07

如果你需要从内核模块读取/写入文件,那么你在架构上会出错。

有一些机制(例如netlink),或者只是注册一个字符设备,以允许一个内核模块和一个用户空间的帮助进程通信。

你也可以实现一个系统调用(或类似的)来获取在用户空间中打开的文件描述符,并从内核中读/写它。

这可能会比试图在内核空间打开文件更整洁。

还有一些已经从内核空间打开文件的东西,你可以看看他们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档