函数逻辑报告 | 
Source Code:mm\readahead.c | 
Create Date:2022-07-27 15:35:54 | 
| Last Modify:2020-03-17 21:13:07 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:A minimal readahead algorithm for trivial sequential/random reads.
函数原型:static unsigned long ondemand_readahead(struct address_space *mapping, struct file_ra_state *ra, struct file *filp, bool hit_readahead_marker, unsigned long offset, unsigned long req_size)
返回类型:unsigned long
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct address_space * | mapping | |
| struct file_ra_state * | ra | |
| struct file * | filp | |
| bool | hit_readahead_marker | |
| unsigned long | offset | |
| unsigned long | req_size | 
| 387 | bdi等于inode_to_bdi(host) | 
| 396 | 如果req_size大于max_pages且 max allowed IO size 大于max_pages则max_pages等于两数取小(req_size, max allowed IO size ) | 
| 402 | 如果非offset则转到:initial_readahead | 
| 412 | # of readahead pages 等于Get the previous window size, ramp it up, and* return it as the new window size. | 
| 414 | 转到:readit | 
| 423 | 如果hit_readahead_marker则 | 
| 433 | where readahead started 等于start | 
| 434 | # of readahead pages 等于start减offset | 
| 435 | # of readahead pages 加等于req_size | 
| 436 | # of readahead pages 等于Get the previous window size, ramp it up, and* return it as the new window size. | 
| 438 | 转到:readit | 
| 444 | 如果req_size大于max_pages则转到:initial_readahead | 
| 453 | 如果offset减prev_offset小于等于1UL则转到:initial_readahead | 
| 469 | initial_readahead : | 
| 472 | do asynchronous readahead whenthere are only # of pages ahead 等于如果# of readahead pages 大于req_size则# of readahead pages 减req_size否则# of readahead pages | 
| 474 | readit : | 
| 名称 | 描述 | 
|---|---|
| page_cache_sync_readahead | page_cache_sync_readahead - generic file readahead*@mapping: address_space which holds the pagecache and I/O vectors*@ra: file_ra_state which holds the readahead state*@filp: passed on to ->readpage() and ->readpages()*@offset: start offset into @mapping, | 
| page_cache_async_readahead | page_cache_async_readahead - file readahead for marked pages*@mapping: address_space which holds the pagecache and I/O vectors*@ra: file_ra_state which holds the readahead state*@filp: passed on to ->readpage() and ->readpages()*@page: the page at @offset | 
| 源代码转换工具 开放的插件接口  | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码  |