linux - 是否在内核中使用像 sprintf 这样的用户空间函数?

标签 linux linux-kernel linux-device-driver

我正在为我的驱动程序创建一个/proc 条目。因此,在读取回调函数中,第一个参数是我们为用户写入数据的位置。我搜索了如何在其中写入数据,我可以看到每个人都为此目的使用 sprintf。我很惊讶地看到它在内核空间中工作。然而,在内核空间中使用用户空间函数应该是错误的。我也不知道如何在不使用任何用户空间函数(如 strcpy、sprintf 等)的情况下在该位置写入。我使用的是内核版本 3.9.10。请建议我如何在不使用 sprintf 或任何其他用户空间函数的情况下执行此操作。

最佳答案

大多数“普通”用户空间函数在内核代码中没有任何意义,因此它们在内核中不可用。

但是,一些函数,如 sprintfstrcpymemcpy 在内核代码中很有用,因此内核实现它们(或多或少完全)并使它们可用于驱动程序。 参见 include/linux/kernel.hstring.h .

关于linux - 是否在内核中使用像 sprintf 这样的用户空间函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102623/

相关文章:

c - GIOChannel 有时读取有时不读取

linux - 使用 UNIX/Linux 命令管道和重定向列出文件

c - 用户空间和内核空间崩溃的区别

c - 内核模块中的调试堆栈溢出

c - Linux 内核函数 dm_per_bio_data 有什么作用?

linux-kernel - Linux 中断处理

java - Linux 上 C 与 Java 的接口(interface)

ruby-on-rails - 乘客的适当文件夹权限

Linux 内核 makefile cscope 目标

c - 为什么我的 PCI-e I/O 寄存器读取似乎被缓存了?