new:kzalloc

This commit is contained in:
fslongjin
2022-08-15 17:57:05 +08:00
parent cec44c1fd7
commit f513286f53
11 changed files with 73 additions and 29 deletions

View File

@ -4,7 +4,7 @@ DragonOS提供了一些用于内存分配的api。您可以使用*kmalloc*来分
## 选择合适的内存分配器
在内核中,最直接、最简单的分配内存的方式就是,使用`kmalloc()`函数进行分配。并且,出于安全起见,在得到内存块后,我们强烈建议使用`memset()`函数将该内存区域清零。
在内核中,最直接、最简单的分配内存的方式就是,使用`kmalloc()`函数进行分配。并且,出于安全起见,除非内存在分配后一定会被覆盖,且您能确保内存中的脏数据一定不会对程序造成影响,在其余情况下,我们建议使用`kzalloc()`进行内存分配,它将会在`kmalloc()`的基础上,把申请到的内存进行清零。
您可以通过`kmalloc()`函数分配得到32bytes到1MBytes之间的内存对象。并且这些内存对象具有以下的性质

View File

@ -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()`申请的内存,否则将会导致系统崩溃。
##### 参数