从用户空间读/写到 proc 条目
我有一个 LKM 模块,它使用 create_proc_entry() 创建一个 proc 条目。我必须从用户空间程序发送一些复杂的数据(我正在考虑一个结构)并将其存储在 /proc 条目中,以便 LKM 可以接收它。
现在,我对如何使用 fwrite() 之类的东西将结构数据转换为缓冲输出感到困惑,因为从用户空间写入 /proc 条目的回调具有缓冲区形式的数据参数。
// fwrite prototype
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
// user space write to /proc entry call back prototype
int mod_write( struct file *filp, const char __user *buff,
unsigned long len, void *data );
有什么建议吗?
谢谢。
I have a LKM module which creates a proc entry using create_proc_entry(). I have to send some complex data (I am thinking of a structure) from user space program and store it in the /proc entry so that the LKM can receive it.
Right now, I am puzzled on how to convert structure data into buffered output using something like fwrite() because the callback for write from user space to /proc entry has the data argument in form of a buffer.
// fwrite prototype
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
// user space write to /proc entry call back prototype
int mod_write( struct file *filp, const char __user *buff,
unsigned long len, void *data );
Any suggestions ?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该能够简单地写入数据。像这样的事情:
然后
mod_write
将获得一个指向s
的指针并将其复制到内核空间。您也可以使用
write
,然后就不需要刷新它了。如果您的结构包含指针,事情会变得更加复杂。
You should be able to simply write the data. Something like this:
Then
mod_write
would get a pointer tos
and would copy it into kernel space.You may also use
write
, and then you won't need to flush it.If your structure contains pointers, things get more complicated.