2015-05-14 87 views
1

我無法理解mm_struct.start_data的關係,vm_area_struct.vm_startLinux的MMU:的vma-> vm_start VS MM-> vm_start

vma = find_vma(mm, mm->start_data); 
DBG("mm->start_data(%p) vma->vm_start(%p) mm->end_data(%p) vma->vm_end(%p)\n", (uvp_t)mm->start_data, (uvp_t)vma->vm_start, (uvp_t)mm->end_data, (uvp_t)vma->vm_end); 
ASSERT(mm->start_data >= vma->vm_start); 
我找到相應的MM-> start_data代表了地址的vm_area_struct

和我不明白爲什麼數據沒有通過vm_start和vm_end邊界對齊。我有以下幾種: | vma-> vm_start | ---------- | mm-> start_data | --------- | vma-> vm_end | ------ | MM-> end_data |

mm->start_data(08049f00) vma->vm_start(08049000) mm->end_data(0804a07a) vma->vm_end(0804a000) 

回答