当前位置: 首页 > 面试题库 >

Linux内核中的stdlib.h替代方案?

陈扬
2023-03-14
问题内容

在Linux中开发内核模块时,不允许使用C标准库。
但是,如果我需要使用某些常用功能,例如strcat(),我应该去哪里?


问题答案:

无论Linux内核中没有实现什么,您都必须实现自己或从另一个开源内核模块中借鉴。但是,您会发现它strcat是在内核中实现的。

请参阅内核API文档。特别是关于您的一般问题的“
基本C库函数”部分,以及有关的特定问题的“
字符串处理”部分strcat

您将要包含linux/string.h

我不知道为什么内核API文档实际上没有显示要获得该功能必须包含的头文件。但是,如果您要查找某些内容,则可以将搜索范围限制为,/include/linux因为如果头文件具有在内核的不同部分之间共享的功能,那么这就是头文件所在的位置。

外部头文件/include/linux仅包含与头文件位于同一目录中的源文件的定义。例外是/arch/.../include,它将包含特定于体系结构的标头,而不是平台无关的标头。



 类似资料:
  • 问题内容: 在不深入了解 为什么 的细节的情况下,我正在寻找一种干净的(尽可能)的方法来替换可加载模块中的内核函数和系统调用。我最初的想法是编写一些代码来覆盖某些功能,这些功能将采用原始功能(可能的话, 调用 该功能),然后添加一些自己的代码。关键是我编写的函数必须具有原始函数的名称,因此其他代码在尝试访问它时将改为访问我的函数。 通过将代码放入适当的函数中,我可以轻松地(相对地)直接在内核中执行

  • 问题内容: 当我经历了以下块的Linux的字符设备驱动程序代码,我发现结构的指针在。 我想知道指向的结构及其完整元素。 此结构有什么作用? 问题答案: 它是指向当前进程(即已发出系统调用的进程)的指针。 从文档: 当前过程 尽管内核模块不像应用程序那样顺序执行,但是内核执行的大多数操作都与特定进程有关。内核代码可以通过访问全局项current来了解驱动它的当前进程,该全局项current是指向st

  • 问题内容: 我有兴趣用将在Linux内核3中实现的自定义替换系统调用。我了解到sys调用表不再公开。 有任何想法吗? 对此http://www.linuxtopia.org/online_books/linux_kernel/linux_kernel_module_programming_2.6/x978.html示例的任何引用,对于内核3都将不胜感激:) 谢谢! 问题答案: 我建议使用kprob

  • 本文向大家介绍linux编译内核的方法,包括了linux编译内核的方法的使用技巧和注意事项,需要的朋友参考一下 1、下载需要的内核版本 2、上传到操作系统 3、解压到/usr/src目录下 比如:3.19内核 tar -xvf linux-3.19.tar.xz -C /usr/src 4、创建连接 cd /usr/src ln -sv /usr/src/linux-3.19 Linux 5、进行

  • 问题内容: Linux内核代码中的EXPORT_SYMBOL_GPL是什么? 下面是一段代码,其中包含EXPORT_SYMBOL_GPL 该宏在内核代码中多次出现。 问题答案: 将某些符号(例如函数)定义为可导出(从内核可加载模块中看到)是宏。如果该符号没有“ EXPORT_SYMBOL”,则将无法从模块访问该符号。 将仅在GPL许可的模块中显示该符号,并且-在具有任何许可的模块中显示该符号。 h

  • 主要内容:initramfe虚拟文件系统GRUB 加载了内核之后,内核首先会再进行二次系统的自检,而不一定使用 BIOS 检测的硬件信息。这时内核终于开始替代 BIOS 接管 Linux 的启动过程了。 内核完成再次系统自检之后,开始采用动态的方式加载每个硬件的模块,这个动态模块大家可以想象成硬件的驱动(默认 Linux 硬件的驱动是不需要手工安装的,如果是重要的功能,则会直接编译到内核当中;如果是非重要的功能,比如硬件驱动会编译为模块