Add an optional pmap hook, pmap_fork(), to be called at the end of

uvmspace_fork().

pmap_fork() is used to "fork a pmap", that is copy data from one pmap
to the other that is NOT related to actual mappings in the pmap, but is
otherwise logically coupled to the address space.
This commit is contained in:
thorpej 1999-05-12 19:11:23 +00:00
parent 61bf929d14
commit f5108f64e7
2 changed files with 11 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: uvm_map.c,v 1.38 1999/05/03 08:57:42 mrg Exp $ */
/* $NetBSD: uvm_map.c,v 1.39 1999/05/12 19:11:23 thorpej Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@ -2758,6 +2758,10 @@ uvmspace_fork(vm1)
shmfork(vm1, vm2);
#endif
#ifdef PMAP_FORK
pmap_fork(vm1->vm_map.pmap, vm2->vm_map.pmap);
#endif
UVMHIST_LOG(maphist,"<- done",0,0,0,0);
return(vm2);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.h,v 1.29 1999/03/26 21:58:39 mycroft Exp $ */
/* $NetBSD: pmap.h,v 1.30 1999/05/12 19:11:24 thorpej Exp $ */
/*
* Copyright (c) 1991, 1993
@ -185,11 +185,15 @@ void pmap_update __P((void));
void pmap_zero_page __P((paddr_t));
#if defined(PMAP_STEAL_MEMORY)
vaddr_t pmap_steal_memory __P((vsize_t, paddr_t *,
vaddr_t pmap_steal_memory __P((vsize_t, paddr_t *,
paddr_t *));
#else
void pmap_virtual_space __P((vaddr_t *, vaddr_t *));
#endif
#if defined(PMAP_FORK)
void pmap_fork __P((pmap_t, pmap_t));
#endif
__END_DECLS
#endif /* kernel*/
#endif /* PMAP_EXCLUDE_DECLS */