diff options
author | alc <alc@FreeBSD.org> | 2002-07-14 19:36:15 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-07-14 19:36:15 +0000 |
commit | 13868892dbc49cff489b66840185bd3a2c489495 (patch) | |
tree | 06eb6b14f575b081aae29e9f8b4fc8989530732c /sys/vm/vm_glue.c | |
parent | c288b01e7dc244369bfc3e9378588bc005deca52 (diff) | |
download | FreeBSD-src-13868892dbc49cff489b66840185bd3a2c489495.zip FreeBSD-src-13868892dbc49cff489b66840185bd3a2c489495.tar.gz |
o Lock page queue accesses by vm_page_wire().
Diffstat (limited to 'sys/vm/vm_glue.c')
-rw-r--r-- | sys/vm/vm_glue.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c index 870bced..cf37e46 100644 --- a/sys/vm/vm_glue.c +++ b/sys/vm/vm_glue.c @@ -328,12 +328,14 @@ vm_proc_swapin(struct proc *p) } if (upobj->resident_page_count != UAREA_PAGES) panic("vm_proc_swapin: lost pages from upobj"); + vm_page_lock_queues(); TAILQ_FOREACH(m, &upobj->memq, listq) { m->valid = VM_PAGE_BITS_ALL; vm_page_wire(m); vm_page_wakeup(m); vm_page_flag_set(m, PG_MAPPED | PG_WRITEABLE); } + vm_page_unlock_queues(); up = (vm_offset_t)p->p_uarea; pmap_qenter(up, ma, UAREA_PAGES); } |