| 函数逻辑报告 | 
| Source Code: mm\migrate.c | Create Date:2022-07-27 17:33:41 | 
| Last Modify:2022-05-20 09:53:13 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:Migrate an array of page address onto an array of nodes and fill* the corresponding array of status.
函数原型:static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, unsigned long nr_pages, const void __user *__user *pages, const int __user *nodes, int __user *status, int flags)
返回类型:int
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct mm_struct * | mm | |
| nodemask_t | task_nodes | |
| unsigned long | nr_pages | |
| const void __user *__user * | pages | |
| const int __user * | nodes | |
| int __user * | status | |
| int | flags | 
| 1596 | current_node等于NUMA_NO_NODE | 
| 1599 | err等于0 | 
| 1609 | 如果Careful: we have to cast the result to the type of the pointer* for sign reasons(p, pages + i)则转到:out_flush | 
| 1611 | 如果Careful: we have to cast the result to the type of the pointer* for sign reasons(node, nodes + i)则转到:out_flush | 
| 1616 | 如果node小于0或node大于等于MAX_NUMNODES则转到:out_flush | 
| 1618 | 如果非node_state(node, N_MEMORY)则转到:out_flush | 
| 1625 | 如果current_node恒等于NUMA_NO_NODE则 | 
| 1626 | current_node等于node | 
| 1628 | 否则如果node不等于current_node则 | 
| 1629 | err等于do_move_pages_to_node(mm, & pagelist, current_node) | 
| 1630 | 如果err则 | 
| 1643 | err等于store_status(status, start, current_node, i - start) | 
| 1647 | current_node等于node | 
| 1654 | err等于Resolves the given address to a struct page, isolates it from the LRU and* puts it to the given pagelist | 
| 1657 | 如果非err则 | 
| 1663 | 否则如果err大于0则 | 
| 1665 | 继续下一循环 | 
| 1668 | err等于store_status(status, i, err, 1) | 
| 1672 | err等于do_move_pages_to_node(mm, & pagelist, current_node) | 
| 1673 | 如果err则 | 
| 1679 | err等于store_status(status, start, current_node, i - start) | 
| 1683 | current_node等于NUMA_NO_NODE | 
| 1685 | out_flush : | 
| 1690 | err1等于do_move_pages_to_node(mm, & pagelist, current_node) | 
| 1698 | 如果非err1则err1等于store_status(status, start, current_node, i - start) | 
| 1702 | out : | 
| 1703 | 返回:err | 
| 名称 | 描述 | 
|---|---|
| kernel_move_pages | Move a list of pages in the address space of the currently executing* process. | 
| 源代码转换工具 开放的插件接口 | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |