summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-01-24 09:49:49 +0000
committerjhb <jhb@FreeBSD.org>2001-01-24 09:49:49 +0000
commit1b7c29442e5ad3530e88e080d18fb4e82c39a7ff (patch)
tree54bd07b4a323bfff75ce5289882590616ae8e8c0 /sys/amd64
parent8e161d3269e181e90230c96d4cd3dd335f5a934f (diff)
downloadFreeBSD-src-1b7c29442e5ad3530e88e080d18fb4e82c39a7ff.zip
FreeBSD-src-1b7c29442e5ad3530e88e080d18fb4e82c39a7ff.tar.gz
- Proc locking.
- P_INMEM -> PS_INMEM.
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/pmap.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index b41dfb0..b7c0d0f 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -816,19 +816,25 @@ pmap_new_proc(p)
/*
* allocate object for the upages
*/
+ PROC_LOCK(p);
if ((upobj = p->p_upages_obj) == NULL) {
+ PROC_UNLOCK(p);
upobj = vm_object_allocate( OBJT_DEFAULT, UPAGES);
+ PROC_LOCK(p);
p->p_upages_obj = upobj;
}
/* get a kernel virtual address for the UPAGES for this proc */
if ((up = p->p_addr) == NULL) {
+ PROC_UNLOCK(p);
up = (struct user *) kmem_alloc_nofault(kernel_map,
UPAGES * PAGE_SIZE);
if (up == NULL)
panic("pmap_new_proc: u_map allocation failed");
+ PROC_LOCK(p);
p->p_addr = up;
}
+ PROC_UNLOCK(p);
ptek = (unsigned *) vtopte((vm_offset_t) up);
OpenPOWER on IntegriCloud