从用户空间读/写到 proc 条目

发布于 2025-01-05 16:38:55 字数 506 浏览 0 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乙白 2025-01-12 16:38:55

您应该能够简单地写入数据。像这样的事情:

struct my_data s = { initialization... };
fwrite(&s, sizeof(s), 1, stream);
fflush(stream);

然后mod_write将获得一个指向s的指针并将其复制到内核空间。
您也可以使用write,然后就不需要刷新它了。

如果您的结构包含指针,事情会变得更加复杂。

You should be able to simply write the data. Something like this:

struct my_data s = { initialization... };
fwrite(&s, sizeof(s), 1, stream);
fflush(stream);

Then mod_write would get a pointer to s 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文