 |
Index for Section 9r |
|
 |
Alphabetical listing for K |
|
 |
Bottom of page |
|
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
addr
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]
.
.
.
1. Declares a variable to store the user buffer's virtual address.
2. Declares a variable to store the physical address returned by
KSEG_TO_PHYS.
3. Before calling KSEG_TO_PHYS, calls IS_KSEG_VA to determine if the
virtual address is from the kernel-unmapped address space.
4. If the virtual address is from the kernel-unmapped address space, then
calls KSEG_TO_PHYS to convert the address to a corresponding physical
address.
SEE ALSO
Routines: IS_KSEG_VA(9r), PHYS_TO_KSEG(9r)
 |
Index for Section 9r |
|
 |
Alphabetical listing for K |
|
 |
Top of page |
|