Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 412 → Rev 413

/SPARTAN/trunk/src/mm/vm.c
89,13 → 89,13
 
vm_area_t *vm_area_create(vm_t *m, vm_type_t type, size_t size, __address addr)
{
pri_t pri;
ipl_t ipl;
vm_area_t *a;
if (addr % PAGE_SIZE)
panic("addr not aligned to a page boundary");
pri = cpu_priority_high();
ipl = interrupts_disable();
spinlock_lock(&m->lock);
/*
110,7 → 110,7
if (!a->mapping) {
free(a);
spinlock_unlock(&m->lock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
return NULL;
}
129,7 → 129,7
}
 
spinlock_unlock(&m->lock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
return a;
}
141,9 → 141,9
void vm_area_map(vm_area_t *a, vm_t *m)
{
int i, flags;
pri_t pri;
ipl_t ipl;
pri = cpu_priority_high();
ipl = interrupts_disable();
spinlock_lock(&m->lock);
spinlock_lock(&a->lock);
 
165,15 → 165,15
spinlock_unlock(&a->lock);
spinlock_unlock(&m->lock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
}
 
void vm_area_unmap(vm_area_t *a, vm_t *m)
{
int i;
pri_t pri;
ipl_t ipl;
pri = cpu_priority_high();
ipl = interrupts_disable();
spinlock_lock(&m->lock);
spinlock_lock(&a->lock);
 
183,15 → 183,15
spinlock_unlock(&a->lock);
spinlock_unlock(&m->lock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
}
 
void vm_install(vm_t *m)
{
link_t *l;
pri_t pri;
ipl_t ipl;
pri = cpu_priority_high();
ipl = interrupts_disable();
 
tlb_shootdown_start();
spinlock_lock(&m->lock);
202,7 → 202,7
spinlock_unlock(&m->lock);
tlb_shootdown_finalize();
 
cpu_priority_restore(pri);
interrupts_restore(ipl);
 
vm_install_arch(m);