- 論壇徽章:
- 0
|
在handle_pte_fault()中,將會根據(jù)pte和vma的狀態(tài)來判斷創(chuàng)建對應(yīng)的FILE_MAPPING和ANON 頁面,
handle_pte_fault
if (pte_none(entry)) {
if (vma->vm_ops) {
if (likely(vma->vm_ops->fault))
return do_linear_fault(mm, vma, address,pte, pmd, flags, entry);
}
return do_anonymous_page(mm, vma, address,pte, pmd, flags);
本人理解,包括網(wǎng)上帖子描述do_linear_fault主要是用來創(chuàng)建FILE_MAPPING頁面的,
do_linear_fault
->__do_fault
/*Should we do an early C-O-W break? */
page = vmf.page;
if (flags & FAULT_FLAG_WRITE) {
if (!(vma->vm_flags & VM_SHARED)) {
page = cow_page;
anon = 1;
copy_user_highpage(page, vmf.page, address, vma);
__SetPageUptodate(page);
在這里,為啥COW的寫入是非VM_SHARED類型,就是ANON類型頁面,如果是VM_SHARED類型,就是FILE_MAPPING頁面呢?
謝謝!
|
|