c - procfs 是否需要 copy_to_user ?

标签 c linux-kernel procfs

我一直认为当内核通过 procfs 写入用户时,copy_to_user 是必要的。

虽然我忘了做一次(我使用了snprintf),但一切都工作正常。既然我注意到了,我就一直在寻找。我发现this link这并不是说需要 copy_to_user ,即使对于其他部分(内核从用户读取)它确实说 copy_from_user 是必要的。

那么,缓冲区是否已经在内核空间中提供给内核模块来写入数据(以便用户从中读取数据)?通过 procfs 写入时,真的不需要 copy_to_user 吗?或者我很幸运没有发生车祸?

最佳答案

在处理用户空间指针时,始终使用copy_from_usercopy_to_user。即使简单的 memcpy 有时对您有用,但在某些情况下它也可能会失败。请参阅this信息线程。

谈到procfs,有必要考虑到它在内核内存预分配方面使用了一个小技巧。请参阅this链接了解详细信息。

关于c - procfs 是否需要 copy_to_user ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991416/

相关文章:

c - 实现我自己的 ps 命令

c - Linux 内核代码中 create_proc_entry() 和 read_proc 的替代方案

Linux procfs inode 编号在进程运行时发生变化

linux - 如何设置内核线程的亲和性?

c - 如何引发页面错误

c - MSP430 (msp430-gcc) 链接器 undefined reference

android - 如何将现有的仅 header 源文件添加到 android studio?

android - 如何在 ftrace 中设置 trace_pipe 的缓冲区大小?

c - 在 libcoap coap 服务器 GET 响应处理程序中如何访问 URI 的查询添加项?

c - 优化 C 中的 while 循环?