In article <ufwwhq8g23.fsf@dax.dcs.ed.ac.uk> you write:
>[...]
>However, we still have to scan all processes in this case. That is
>always going to be the case for as long as we can have multiple maps
>into any single page. The BSD page on its own structure is not
>sufficient to provide this physical-to-virtual mapping.
Yes, it is, but in the MD parts of the kernel, not in the MI
page frame description.
from /sys/arch/i386/i386/pmap.h (similarly done for other architectures):
[vm_page_t is the structure describing a physical page frame
a pmap is the ADT for a pagetable]
/*
* For each vm_page_t, there is a list of all currently valid virtual
* mappings of that page. An entry is a pv_entry, the list is pv_table.
*/
struct pv_entry {
struct pv_entry *pv_next; /* next pv_entry */
pmap_t pv_pmap; /* pmap where mapping lies */
vm_offset_t pv_va; /* virtual address for mapping */
};
Regards, Felix.