mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-18 08:06:32 +00:00
new:kzalloc
This commit is contained in:
@ -4,7 +4,7 @@ DragonOS提供了一些用于内存分配的api。您可以使用*kmalloc*来分
|
||||
|
||||
## 选择合适的内存分配器
|
||||
|
||||
在内核中,最直接、最简单的分配内存的方式就是,使用`kmalloc()`函数进行分配。并且,出于安全起见,在得到内存块后,我们强烈建议您使用`memset()`函数将该内存区域清零。
|
||||
在内核中,最直接、最简单的分配内存的方式就是,使用`kmalloc()`函数进行分配。并且,出于安全起见,除非内存在分配后一定会被覆盖,且您能确保内存中的脏数据一定不会对程序造成影响,在其余情况下,我们建议使用`kzalloc()`进行内存分配,它将会在`kmalloc()`的基础上,把申请到的内存进行清零。
|
||||
|
||||
您可以通过`kmalloc()`函数分配得到32bytes到1MBytes之间的内存对象。并且,这些内存对象具有以下的性质:
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
SLAB内存池提供小内存对象的分配功能。
|
||||
|
||||
### `void *kmalloc(unsigned long size, unsigned long flags)`
|
||||
### `void *kmalloc(unsigned long size, gfp_t gfp)`
|
||||
|
||||
  获取小块的内存。
|
||||
|
||||
@ -18,9 +18,26 @@ SLAB内存池提供小内存对象的分配功能。
|
||||
|
||||
  内存对象的大小
|
||||
|
||||
**flags**
|
||||
**gfp**
|
||||
|
||||
  标志位(暂时未实现,默认填0)
|
||||
  标志位
|
||||
|
||||
### `void *kzalloc(unsigned long size, gfp_t gfp)`
|
||||
|
||||
#### 描述
|
||||
|
||||
  获取小块的内存,并将其清零。其余功能与kmalloc相同。
|
||||
|
||||
|
||||
##### 参数
|
||||
|
||||
**size**
|
||||
|
||||
  内存对象的大小
|
||||
|
||||
**gfp**
|
||||
|
||||
  标志位
|
||||
|
||||
### `unsigned long kfree(void *address)`
|
||||
|
||||
@ -30,7 +47,7 @@ SLAB内存池提供小内存对象的分配功能。
|
||||
|
||||
  该函数用于释放通过kmalloc申请的内存。如果`address`为NULL,则函数被调用后,无事发生。
|
||||
|
||||
  请不要通过这个函数释放那些不是从`kmalloc()`申请的内存,否则将会导致系统崩溃。
|
||||
  请不要通过这个函数释放那些不是从`kmalloc()`或`kzalloc()`申请的内存,否则将会导致系统崩溃。
|
||||
|
||||
##### 参数
|
||||
|
||||
|
Reference in New Issue
Block a user