#include <linux/swapops.h>
#include <linux/rmap.h>
#include <linux/module.h>
+#include <linux/syscalls.h>
#include <linux/vs_memory.h>
#include <asm/mmu_context.h>
set_page_dirty(page);
page_remove_rmap(page);
page_cache_release(page);
- // mm->rss--;
vx_rsspages_dec(mm);
}
}
pgoff_t size;
int err = -ENOMEM;
pte_t *pte;
- pgd_t *pgd;
pmd_t *pmd;
+ pud_t *pud;
+ pgd_t *pgd;
pte_t pte_val;
pgd = pgd_offset(mm, addr);
if (!vx_rsspages_avail(mm, 1))
goto err_unlock;
+
+ pud = pud_alloc(mm, pgd, addr);
+ if (!pud)
+ goto err_unlock;
- pmd = pmd_alloc(mm, pgd, addr);
+ pmd = pmd_alloc(mm, pud, addr);
if (!pmd)
goto err_unlock;
zap_pte(mm, vma, addr, pte);
- // mm->rss++;
vx_rsspages_inc(mm);
flush_icache_page(vma, page);
set_pte(pte, mk_pte(page, prot));
{
int err = -ENOMEM;
pte_t *pte;
- pgd_t *pgd;
pmd_t *pmd;
+ pud_t *pud;
+ pgd_t *pgd;
pte_t pte_val;
pgd = pgd_offset(mm, addr);
spin_lock(&mm->page_table_lock);
+
+ pud = pud_alloc(mm, pgd, addr);
+ if (!pud)
+ goto err_unlock;
- pmd = pmd_alloc(mm, pgd, addr);
+ pmd = pmd_alloc(mm, pud, addr);
if (!pmd)
goto err_unlock;
flush_dcache_mmap_lock(mapping);
vma->vm_flags |= VM_NONLINEAR;
vma_prio_tree_remove(vma, &mapping->i_mmap);
- vma_prio_tree_init(vma);
- list_add_tail(&vma->shared.vm_set.list,
- &mapping->i_mmap_nonlinear);
+ vma_nonlinear_insert(vma, &mapping->i_mmap_nonlinear);
flush_dcache_mmap_unlock(mapping);
spin_unlock(&mapping->i_mmap_lock);
}