函数逻辑报告 | 
Source Code:mm\process_vm_access.c | 
Create Date:2022-07-27 16:31:15 | 
| Last Modify:2020-03-17 21:52:24 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:process_vm_rw_single_vec - read/write pages from task specified*@addr: start memory address of target process*@len: size of area to copy to/from*@iter: where to copy to/from locally*@process_pages: struct pages area that can store at least*
函数原型:static int process_vm_rw_single_vec(unsigned long addr, unsigned long len, struct iov_iter *iter, struct page **process_pages, struct mm_struct *mm, struct task_struct *task, int vm_write)
返回类型:int
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| unsigned long | addr | |
| unsigned long | len | |
| struct iov_iter * | iter | |
| struct page ** | process_pages | |
| struct mm_struct * | mm | |
| struct task_struct * | task | |
| int | vm_write | 
| 83 | start_offset等于addr减pa | 
| 85 | rc等于0 | 
| 86 | max_pages_per_loop等于Maximum number of pages kmalloc'd to hold struct page's during copy 除sizeof(structpages * ) | 
| 88 | flags等于0 | 
| 91 | 如果len恒等于0则返回:0 | 
| 95 | 如果vm_write则flags或等于check pte is writable | 
| 98 | 当非rc且nr_pages且iov_iter_count(iter)循环 | 
| 99 | pages等于两数取小(nr_pages, max_pages_per_loop) | 
| 100 | locked等于1 | 
| 108 | lock for reading | 
| 109 | pages等于get_user_pages_remote() - pin user pages in memory*@tsk: the task_struct to use for page fault accounting, or* NULL if faults are not to be recorded | 
| 111 | 如果locked则lease a read lock | 
| 116 | bytes等于pages乘PAGE_SIZE减start_offset | 
| 124 | start_offset等于0 | 
| 128 | put_page(process_pages[--pages]) | 
| 131 | 返回:rc | 
| 名称 | 描述 | 
|---|---|
| process_vm_rw_core | process_vm_rw_core - core of reading/writing pages from task specified*@pid: PID of process to read/write from/to*@iter: where to copy to/from locally*@rvec: iovec array specifying where to copy to/from in the other process*@riovcnt: size of rvec | 
| 源代码转换工具 开放的插件接口  | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码  |