174e4a8d2SMina Galić.\" 274e4a8d2SMina Galić.\" SPDX-License-Identifier: BSD-2-Clause 374e4a8d2SMina Galić.\" 474e4a8d2SMina Galić.\" Copyright (c) 2023 The FreeBSD Foundation 574e4a8d2SMina Galić.\" 674e4a8d2SMina Galić.\" This manual page was written by Mina Galić <FreeBSD@igalic.co> under 774e4a8d2SMina Galić.\" sponsorship from the FreeBSD Foundation. 874e4a8d2SMina Galić.\" 9d62e0199SMitchell Horne.Dd October 16, 2023 1074e4a8d2SMina Galić.Dt PMAP_KEXTRACT 9 1174e4a8d2SMina Galić.Os 1274e4a8d2SMina Galić.Sh NAME 1374e4a8d2SMina Galić.Nm pmap_kextract , 1474e4a8d2SMina Galić.Nm vtophys 1574e4a8d2SMina Galić.Nd extract a physical address from the kernel page table 1674e4a8d2SMina Galić.Sh SYNOPSIS 1774e4a8d2SMina Galić.In sys/param.h 1874e4a8d2SMina Galić.In vm/vm.h 1974e4a8d2SMina Galić.In vm/pmap.h 2074e4a8d2SMina Galić.Ft vm_paddr_t 2174e4a8d2SMina Galić.Fo pmap_kextract 2274e4a8d2SMina Galić.Fa "vm_offset_t va" 2374e4a8d2SMina Galić.Fc 2474e4a8d2SMina Galić.Ft vm_paddr_t 2574e4a8d2SMina Galić.Fo vtophys 2674e4a8d2SMina Galić.Fa "vm_offset_t va" 2774e4a8d2SMina Galić.Fc 2874e4a8d2SMina Galić.Sh DESCRIPTION 2974e4a8d2SMina GalićThe 3074e4a8d2SMina Galić.Fn pmap_kextract 31d62e0199SMitchell Hornefunction retrieves the underlying physical memory address corresponding to the 32d62e0199SMitchell Hornegiven kernel virtual address 3374e4a8d2SMina Galić.Fa va . 34*c1e21468SMitchell HorneThe caller is responsible for ensuring that 3574e4a8d2SMina Galić.Fa va 36*c1e21468SMitchell Hornebelongs to a valid mapping in the kernel address space. 37*c1e21468SMitchell HorneThe returned physical address is only meaningful as long as the mapping remains 38*c1e21468SMitchell Hornestable, so the caller must also have some knowledge or guarantee of the 39*c1e21468SMitchell Hornemapping's lifetime. 40*c1e21468SMitchell HorneFor example, it is invalid to call 41*c1e21468SMitchell Horne.Fn pmap_kextract 42*c1e21468SMitchell Hornewith the address of a malloc'd object while there is a possibility for that 43*c1e21468SMitchell Horneobject to be freed concurrently. 44*c1e21468SMitchell Horne.Pp 45*c1e21468SMitchell HorneUnlike 46*c1e21468SMitchell Horne.Xr pmap_extract 9 , 47*c1e21468SMitchell Horne.Fn pmap_kextract 48*c1e21468SMitchell Horneis safe to be called from any context; it has no internal locking or sleep. 4974e4a8d2SMina Galić.Pp 5074e4a8d2SMina Galić.Fn vtophys 5174e4a8d2SMina Galićis an alias for 5274e4a8d2SMina Galić.Fn pmap_kextract 5374e4a8d2SMina Galićand behaves identically. 5474e4a8d2SMina Galić.Sh RETURN VALUES 5574e4a8d2SMina GalićThe 5674e4a8d2SMina Galić.Fn pmap_kextract 57*c1e21468SMitchell Hornefunction returns the physical address of memory mapped at the kernel 58d62e0199SMitchell Hornevirtual address 5974e4a8d2SMina Galić.Fa va . 6074e4a8d2SMina Galić.Pp 6174e4a8d2SMina Galić.Fn pmap_kextract 6274e4a8d2SMina Galićgenerally does not fail. 6374e4a8d2SMina GalićHowever, if supplied with an illegitimate value for 6474e4a8d2SMina Galić.Fa va , 6574e4a8d2SMina Galićthe function may return zero, an invalid non-zero value, or call 6674e4a8d2SMina Galić.Xr panic 9 . 6774e4a8d2SMina Galić.Sh SEE ALSO 6874e4a8d2SMina Galić.Xr pmap 9 , 6974e4a8d2SMina Galić.Xr pmap_extract 9 7074e4a8d2SMina Galić.Sh AUTHORS 7174e4a8d2SMina Galić.An -nosplit 7274e4a8d2SMina GalićThis manual page was written by 7374e4a8d2SMina Galić.An Mina Galić Aq Mt FreeBSD@igalic.co , 7474e4a8d2SMina Galićbased on the 7574e4a8d2SMina Galić.Xr pmap_extract 9 7674e4a8d2SMina Galićpage written by 7774e4a8d2SMina Galić.An Bruce M Simpson Aq Mt bms@spc.org . 78