首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核空间IOCTL

核空间IOCTL
EN

Stack Overflow用户
提问于 2016-03-15 11:55:42
回答 1查看 1.7K关注 0票数 1

粗略地说,我试图从内核空间发出一个IOCTL调用,而不进入用户空间。(我在其中找到的所有答案都建议浏览用户空间)。

具体来说,我尝试从内核空间(使用内核模块)填充熵池(/dev/random),我知道这样做的危险;)。从用户空间填充熵池是使用IOCTL完成的,例如Rngadd熵。有办法在内核空间做同样的事情吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-15 14:05:57

您也可以从内核空间使用ioctl。

因为ioctl命令RNDADDENTROPY是特定于文件的,所以它的处理应该在.unlocked_ioctl操作/dev/random文件中实现(实际上是这样实现的,参见函数伊奥克特)。

对于特定于文件的ioctl命令,可以直接调用.unlocked_ioctl文件的操作:

代码语言:javascript
复制
// Open file
struct file* f = filp_open("/dev/random", O_WRONLY, 0);
// Replace user space with kernel space
mm_segment_t old_fs = get_fs();
set_fs(KERNEL_DS);

f->f_op->unlocked_ioctl(f, RNDADDENTROPY, entropy);

// Restore space
set_fs(old_fs);

// Close file
filp_close(f, 0);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36010656

复制
相关文章

相似问题

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