函数逻辑报告 | 
Source Code:kernel\trace\ring_buffer.c | 
Create Date:2022-07-27 12:58:53 | 
| Last Modify:2020-03-17 19:30:04 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:__rb_allocate_pages
函数原型:static int __rb_allocate_pages(long nr_pages, struct list_head *pages, int cpu)
返回类型:int
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| long | nr_pages | |
| struct list_head * | pages | |
| int | cpu | 
| 1192 | bool user_thread = mm != NULL | 
| 1203 | i等于si_mem_available() | 
| 1212 | mflags等于GFP_KERNEL按位或__GFP_RETRY_MAYFAIL | 
| 1223 | 如果user_thread则set_current_oom_origin() | 
| 1228 | bpage等于根据内存节点分配内存 | 
| 1230 | 如果非bpage则转到:free_pages | 
| 1233 | 添加链表项 | 
| 1235 | page等于Allocate pages, preferring the node given as nid. When nid == NUMA_NO_NODE,* prefer the current CPU's closest node. Otherwise node must be valid and* online. | 
| 1236 | 如果非page则转到:free_pages | 
| 1238 | Actual data page 等于page_address(page) | 
| 1239 | rb_init_page(Actual data page ) | 
| 1241 | 如果user_thread且fatal_signal_pending(当前进程)则转到:free_pages | 
| 1244 | 如果user_thread则clear_current_oom_origin() | 
| 1247 | 返回:0 | 
| 1249 | free_pages : | 
| 1251 | 删除链表项并重新初始化 | 
| 1254 | 如果user_thread则clear_current_oom_origin() | 
| 1257 | 返回:负ENOMEM | 
| 名称 | 描述 | 
|---|---|
| rb_allocate_pages | |
| ring_buffer_resize | g_buffer_resize - resize the ring buffer*@buffer: the buffer to resize.*@size: the new size.*@cpu_id: the cpu buffer to resize* Minimum size is 2 * BUF_PAGE_SIZE.* Returns 0 on success and < 0 on failure. | 
| 源代码转换工具 开放的插件接口  | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码  |