从用户空间读取/写入proc条目

时间:2012-02-13 13:50:48

标签: c linux fwrite kernel-module

我有一个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 );

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

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