man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: July 2014
 
 

hat_getkpfnum(9F)

Name

hat_getkpfnum - get page frame number for kernel address

Synopsis

#include <sys/types.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>

pfn_t hat_getkpfnum(caddr_t addr);

Interface Level

This interface is obsolete. A driver devmap(9E) entry point should be provided instead.

Parameters

addr

The kernel virtual address for which the page frame number is to be returned.

Description

hat_getkpfnum() returns the page frame number corresponding to the kernel virtual address, addr.

addr must be a kernel virtual address which maps to device memory. ddi_map_regs(9F) can be used to obtain this address. For example, ddi_map_regs(9F) can be called in the driver's attach(9E) routine. The resulting kernel virtual address can be saved by the driver (see ddi_soft_state(9F)) and used in mmap (9E). The corresponding ddi_unmap_regs(9F) call can be made in the driver's detach(9E) routine. Refer to mmap(9E) for more information.

Return Values

The page frame number corresponding to the valid, device-mapped virtual address addr. Otherwise the return value is undefined.

Context

hat_getkpfnum() can be called only from user or kernel context.

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Obsolete

See Also

attach(9E), detach(9E), devmap(9E), mmap(9E), ddi_map_regs(9F), ddi_soft_state(9F), ddi_unmap_regs(9F)

Writing Device Drivers for Oracle Solaris 11.2

Notes

For some devices, mapping device memory in the driver's attach(9E) routine and unmapping device memory in the driver's detach(9E) routine is a sizeable drain on system resources. This is especially true for devices with a large amount of physical address space. Refer to mmap(9E) for alternative methods.