summaryrefslogtreecommitdiffstats
path: root/contrib/netbsd-tests/lib/libc/stdlib/h_getopt_long.c
diff options
context:
space:
mode:
authorroyger <royger@FreeBSD.org>2014-10-24 09:48:58 +0000
committerroyger <royger@FreeBSD.org>2014-10-24 09:48:58 +0000
commit0e3d9b8126c5ba0e3328ab6b3ba55b3d503d9715 (patch)
treee2b9160b6c3a1969d72f8ff01f8e9f734b08863d /contrib/netbsd-tests/lib/libc/stdlib/h_getopt_long.c
parent233b5312683de0c43509ba3e339e17452caa5eea (diff)
downloadFreeBSD-src-0e3d9b8126c5ba0e3328ab6b3ba55b3d503d9715.zip
FreeBSD-src-0e3d9b8126c5ba0e3328ab6b3ba55b3d503d9715.tar.gz
amd64: make uiomove_fromphys functional for pages not mapped by the DMAP
Place the code introduced in r268660 into a separate function that can be called from uiomove_fromphys. Instead of pre-allocating two KVA pages use vmem_alloc to allocate them on demand when needed. This prevents blocking if a page fault is taken while physical addresses from outside the DMAP are used, since the lock is now removed. Also introduce a safety catch in PHYS_TO_DMAP and DMAP_TO_PHYS. Sponsored by: Citrix Systems R&D Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D947 amd64/amd64/pmap.c: - Factor out the code to deal with non DMAP addresses from pmap_copy_pages and place it in pmap_map_io_transient. - Change the code to use vmem_alloc instead of a set of pre-allocated pages. - Use pmap_qenter and don't pin the thread if there can be page faults. amd64/amd64/uio_machdep.c: - Use pmap_map_io_transient in order to correctly deal with physical addresses not covered by the DMAP. amd64/include/pmap.h: - Add the prototypes for the new functions. amd64/include/vmparam.h: - Add safety catches to make sure PHYS_TO_DMAP and DMAP_TO_PHYS are only used with addresses covered by the DMAP.
Diffstat (limited to 'contrib/netbsd-tests/lib/libc/stdlib/h_getopt_long.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud