与memset函数等效的Linux内核是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与memset函数等效的Linux内核是什么?相关的知识,希望对你有一定的参考价值。

我正在编写一个驱动程序,要求我清除分配给零的所有内存。 memset是一个用户空间函数,但我想知道内核是否提供了一个可以帮助我做到这一点的宏。

答案

根据this thread和人们在这里评论使用它,memset在内核代码中可用。也许你只是忘了

#include <string.h>
另一答案

这是真的memset() in

include <string.h >

不应该出现在内核代码中。事实上,在驱动程序开发过程中追踪memset()的位置可能会花费很多。实际上memset()的定义是

#include<linux/string.h>

它说:

#ifndef __KERNEL__
#include <string.h>
#else
/* We don't want strings.h stuff being used by user stuff by accident */

希望这有助于你100%确定地输入'memset()':)

另一答案

我在一本Linux驱动程序开发书中查了一下(它是德语,所以我会给出它基本上所说的内容的松散翻译)并且它给出了以下描述:

#include <asm/io.h>
void *memset(void *s, int c, size_t n);

使用常量字节值n填充s中给定记忆区域的第一个c字节。如果要将memory mapped I/O内存的区域设置为常量值,则必须使用memset_io()函数。

返回指向s的指针。


做一些调查...如果你看看<asm/io.h>来源,你会发现:

#include <linux/string.h> /* for memset() and memcpy() */

...还有memset_io()函数的定义,所以我猜这应该是正确的#include

以上是关于与memset函数等效的Linux内核是什么?的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核与内核函数与操作系统,系统调用,这几者的联系是什么?

memset 与绑定到每个物理内核的线程并行

Python 等效于 MATLAB 的“ismember”函数

Windows 等效于 Linux fifo

Linux内核系统调用的基础信息

systemtap 列出所有linux 内核模块与相关函数2