KSEG_TO_PHYS(9r)														  KSEG_TO_PHYS(9r)

NAME
KSEG_TO_PHYS - General: Converts a kernel-unmapped virtual address to a physical address SYNOPSIS
vm_offset_t KSEG_TO_PHYS( vm_offset_t addr ); ARGUMENTS
Specifies the buffer virtual address to convert to a physical address. DESCRIPTION
The KSEG_TO_PHYS routine converts a kernel-unmapped virtual address to a kernel physical address. Device drivers can use this physical address in DMA operations. Prior to calling KSEG_TO_PHYS, device driver writers often call one of the following routines to determine whether the address passed is a virtual address in the addressed kernel segment: IS_KSEG_VA Determines if the specified address is located in the kernel-unmapped address space. IS_SEG0_VA Determines if the specified address is located in the user-mapped address space. IS_SEG1_VA Determines if the specified address is located in the kernel-mapped address space. RETURN VALUES
Upon successful completion, KSEG_TO_PHYS returns the physical address. EXAMPLE
The following code fragment shows a call to KSEG_TO_PHYS: . . . caddr_t virt_addr; [1] unsigned phys_addr; [2] . . . if(IS_KSEG_VA(virt_addr)) { [3] phys_addr = KSEG_TO_PHYS(virt_addr); [4] . . . Declares a variable to store the user buffer's virtual address. Declares a variable to store the physical address returned by KSEG_TO_PHYS. Before calling KSEG_TO_PHYS, calls IS_KSEG_VA to determine if the virtual address is from the kernel-unmapped address space. If the virtual address is from the kernel-unmapped address space, then calls KSEG_TO_PHYS to convert the address to a corresponding physi- cal address. SEE ALSO
Routines: IS_KSEG_VA(9r), PHYS_TO_KSEG(9r) KSEG_TO_PHYS(9r)