函数逻辑报告 | 
Source Code:mm\memblock.c | 
Create Date:2022-07-27 16:40:06 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:memblock_double_array
函数原型:static int __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((__no_instrument_function__))memblock_double_array(struct memblock_type *type, phys_addr_t new_area_start, phys_addr_t new_area_size)
返回类型:int
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct memblock_type * | type | |
| phys_addr_t | new_area_start | |
| phys_addr_t | new_area_size | 
| 416 | use_slab等于slab_is_available() | 
| 422 | 如果非memblock_can_resize则返回:负1 | 
| 426 | old_size等于max乘sizeof(structmemblock_region) | 
| 436 | 如果type恒等于memory则in_slab等于memblock_memory_in_slab | 
| 438 | 否则in_slab等于memblock_reserved_in_slab | 
| 442 | 如果use_slab则 | 
| 445 | 否则 | 
| 447 | 如果type不等于reserved则new_area_start等于new_area_size等于0 | 
| 450 | addr等于memblock_find_in_range(new_area_start + new_area_size, current_limit, new_alloc_size, PAGE_SIZE) | 
| 460 | 如果非addr则 | 
| 463 | 返回:负1 | 
| 479 | max左移等于1位 | 
| 484 | 否则如果old_array不等于memblock_memory_init_regions且old_array不等于memblock_reserved_init_regions则memblock_free(__pa(old_array), old_alloc_size) | 
| 492 | 如果非use_slab则BUG_ON(memblock_reserve(addr, new_alloc_size)) | 
| 498 | 返回:0 | 
| 源代码转换工具 开放的插件接口  | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码  |