Messages in this thread | | | Date | Wed, 4 Jan 2006 18:40:54 +0800 | From | jeff shia <> | Subject | what is the state of current after an mm_fault occurs? |
| |
Hello, In my opinion, the state of current should be TASK_RUNNING after an mm_fault occurs.But I donot know why the function of handle_mm_fault() set the state of current TASK_RUNNING. /* * By the time we get here, we already hold the mm semaphore */ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma, unsigned long address, int write_access) { pgd_t *pgd; pmd_t *pmd;
__set_current_state(TASK_RUNNING); pgd = pgd_offset(mm, address);
inc_page_state(pgfault);
if (is_vm_hugetlb_page(vma)) return VM_FAULT_SIGBUS; /* mapping truncation does this. */
/* * We need the page table lock to synchronize with kswapd * and the SMP-safe atomic PTE updates. */ spin_lock(&mm->page_table_lock); pmd = pmd_alloc(mm, pgd, address);
if (pmd) { pte_t * pte = pte_alloc_map(mm, pmd, address); if (pte) return handle_pte_fault(mm, vma, address, write_access, pte, pmd); } spin_unlock(&mm->page_table_lock); return VM_FAULT_OOM; }
any help will be preferred. Thank you!!
Jeff - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |