函数逻辑报告 |
Source Code:mm\slob.c |
Create Date:2022-07-27 17:09:28 |
Last Modify:2022-05-20 09:26:42 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:slob_alloc: entry point into the slob allocator.
函数原型:static void *slob_alloc(size_t size, gfp_t gfp, int align, int node, int align_offset)
返回类型:void
参数:
类型 | 参数 | 名称 |
---|---|---|
size_t | size | |
gfp_t | gfp | |
int | align | |
int | node | |
int | align_offset |
312 | 否则如果size小于SLOB_BREAK2则slob_list等于free_slob_medium |
314 | 否则slob_list等于free_slob_large |
320 | bool page_removed_from_list = false |
326 | 如果node不等于NUMA_NO_NODE且page_to_nid(sp)不等于node则继续下一循环 |
330 | 如果 SLOB 小于SLOB_UNITS(size)则继续下一循环 |
334 | 如果非b则继续下一循环 |
343 | 如果非page_removed_from_list则 |
352 | 退出 |
357 | 如果非b则 |
358 | b等于slob_new_pages(gfp & ~__GFP_ZERO, 0, node) |
359 | 如果非b则返回:NULL |
361 | sp等于virt_to_page(kaddr) returns a valid pointer if and only if* virt_addr_valid(kaddr) returns true.(b) |
362 | __SetPageSlab(sp) |
365 | SLOB 等于SLOB_UNITS(PAGE_SIZE) |
366 | first free object 等于b |
367 | 初始化链表头 |
369 | set_slob_page_free(sp, slob_list) |
374 | 如果此条件成立可能性小(为编译器优化)(gfp & __GFP_ZERO)则memset(b, 0, size) |
376 | 返回:b |
名称 | 描述 |
---|---|
__do_kmalloc_node | End of slob allocator proper. Begin kmem_cache_alloc and kmalloc frontend. |
slob_alloc_node |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |