变量 | |
static int | g_totalPageCacheTry = 0 |
static int | g_totalPageCacheHit = 0 |
LosVmFileOps | g_commVmOps |
虚拟内存文件操作实现类 更多... | |
STATIC UINT32 GetDirtySize | ( | LosFilePage * | fpage, |
struct Vnode * | vnode | ||
) |
VOID OsAddMapInfo | ( | LosFilePage * | page, |
LosArchMmu * | archMmu, | ||
VADDR_T | vaddr | ||
) |
在文件 los_vm_filemap.c 第 127 行定义.
VOID OsAddToPageacheLru | ( | LosFilePage * | page, |
struct page_mapping * | mapping, | ||
VM_OFFSET_T | pgoff | ||
) |
将页面加到活动文件页LRU链表上
在文件 los_vm_filemap.c 第 100 行定义.
VOID OsDeletePageCacheLru | ( | LosFilePage * | page | ) |
VOID OsDelMapInfo | ( | LosVmMapRegion * | region, |
LosVmPgFault * | vmf, | ||
BOOL | cleanDirty | ||
) |
删除映射信息
在文件 los_vm_filemap.c 第 348 行定义.
VOID OsDoFlushDirtyPage | ( | LosFilePage * | fpage | ) |
冲洗脏页数据,将脏页数据回写磁盘
在文件 los_vm_filemap.c 第 326 行定义.
LosFilePage * OsDumpDirtyPage | ( | LosFilePage * | oldFPage | ) |
VOID OsFileCacheFlush | ( | struct page_mapping * | mapping | ) |
文件缓存冲洗,把所有fpage冲洗一边,把脏页洗到dirtyList中,配合OsFileCacheRemove理解
在文件 los_vm_filemap.c 第 453 行定义.
VOID OsFileCacheRemove | ( | struct page_mapping * | mapping | ) |
在文件 los_vm_filemap.c 第 486 行定义.
LosFilePage * OsFindGetEntry | ( | struct page_mapping * | mapping, |
VM_OFFSET_T | pgoff | ||
) |
STATIC INT32 OsFlushDirtyPage | ( | LosFilePage * | fpage | ) |
冲洗脏页,回写磁盘
在文件 los_vm_filemap.c 第 278 行定义.
LosMapInfo * OsGetMapInfo | ( | LosFilePage * | page, |
LosArchMmu * | archMmu, | ||
VADDR_T | vaddr | ||
) |
通过虚拟地址获取文件页映射信息,archMmu每个进程都有属于自己的mmu
在文件 los_vm_filemap.c 第 144 行定义.
VOID OsMarkPageDirty | ( | LosFilePage * | fpage, |
LosVmMapRegion * | region, | ||
INT32 | off, | ||
INT32 | len | ||
) |
标记page为脏页 进程修改了高速缓存里的数据时,该页就被内核标记为脏页
在文件 los_vm_filemap.c 第 233 行定义.
STATUS_T OsNamedMMap | ( | struct file * | filep, |
LosVmMapRegion * | region | ||
) |
有名映射,可理解为文件映射,跟匿名映射相对应 参数filep是广义的文件,在鸿蒙内核,目录/普通文件/字符设备/块设备/网络套接字/管道/链接 都是文件
在文件 los_vm_filemap.c 第 536 行定义.
STATIC VOID OsPageCacheAdd | ( | LosFilePage * | page, |
struct page_mapping * | mapping, | ||
VM_OFFSET_T | pgoff | ||
) |
增加文件页到页高速缓存(page cache) LosFilePage将一个文件切成了一页一页,因为读文件过程随机seek,所以文件页也不会是连续的, pgoff记录文件的位置,并确保在cache的文件数据是按顺序排列的.
page | |
mapping | |
pgoff |
在文件 los_vm_filemap.c 第 83 行定义.
LosFilePage * OsPageCacheAlloc | ( | struct page_mapping * | mapping, |
VM_OFFSET_T | pgoff | ||
) |
以页高速缓存方式分配一个文件页 LosFilePage Direct Memory Access(存储器直接访问)指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据。 整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU只需在数据传输开始和结束时做一点处理(开始和结束时候要做中断处理)
在文件 los_vm_filemap.c 第 594 行定义.
VOID OsPageCacheDel | ( | LosFilePage * | fpage | ) |
从页高速缓存上删除页
在文件 los_vm_filemap.c 第 106 行定义.
STATIC VOID OsPageCacheUnmap | ( | LosFilePage * | fpage, |
LosArchMmu * | archMmu, | ||
VADDR_T | vaddr | ||
) |
在文件 los_vm_filemap.c 第 166 行定义.
STATIC VOID OsReleaseFpage | ( | struct page_mapping * | mapping, |
LosFilePage * | fpage | ||
) |
在文件 los_vm_filemap.c 第 335 行定义.
INT32 OsVfsFileMmap | ( | struct file * | filep, |
LosVmMapRegion * | region | ||
) |
在文件 los_vm_filemap.c 第 524 行定义.
INT32 OsVmmFileFault | ( | LosVmMapRegion * | region, |
LosVmPgFault * | vmf | ||
) |
文件缺页时的处理,先读入磁盘数据,再重新读页数据 被 OsDoReadFault(...),OsDoCowFault(...),OsDoSharedFault(...) 等调用
在文件 los_vm_filemap.c 第 385 行定义.
VOID OsVmmFileRemove | ( | LosVmMapRegion * | region, |
LosArchMmu * | archMmu, | ||
VM_OFFSET_T | pgoff | ||
) |
删除文件
在文件 los_vm_filemap.c 第 186 行定义.
LosVmFileOps g_commVmOps |
虚拟内存文件操作实现类
在文件 los_vm_filemap.c 第 517 行定义.
|
static |
在文件 los_vm_filemap.c 第 54 行定义.
|
static |
在文件 los_vm_filemap.c 第 53 行定义.