LINUX.ORG.RU

Question: kernel remap_pfn_range changes in 2.6.2x


0

0

В текущем коде ядра (смотрю 2.6.24) добавлена проверка "if (addr != vma->vm_start || end != vma->vm_end)" не позволяющая примапить физич страницы в юзерспейсную vm_area если размер vm_area больше чем общая длмна этих страниц.

Раньше (в районе 2.6.10) это работало так: вместо страниц vm_area которые вылезли за предел примапливалась ZERO_PAGE и соотв при обращении к этим страницам (возникал page fault итд) юзерспейс получал доступные для записи страницы разделяемой памяти заполненные нулями.

как добиться такого же эффекта в текущих ядрах?

int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn, unsigned long size, pgprot_t prot)

{ ...

if (is_cow_mapping(vma->vm_flags)) {

if (addr != vma->vm_start || end != vma->vm_end){

return -EINVAL;

}

vma->vm_pgoff = pfn;

}

...

anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.