Mapping Device Memory
Some devices, such as frame buffers, have memory that is directly accessible to user
threads by way of memory mapping. Drivers for these devices typically do not
support the read(9E) and write(9E) interfaces. Instead, these drivers support memory mapping with
the devmap(9E) entry point. For example, a frame buffer driver might implement the
devmap(9E) entry point to enable the frame buffer to be mapped in a
user thread.
The devmap(9E) entry point is called to export device memory or kernel
memory to user applications. The devmap() function is called from devmap_setup(9F) inside segmap(9E)
or on behalf of ddi_devmap_segmap(9F).
The segmap(9E) entry point is responsible for setting up a memory mapping requested
by an mmap(2) system call. Drivers for many memory-mapped devices use ddi_devmap_segmap(9F) as
the entry point rather than defining their own segmap(9E) routine.
See Chapter 10, Mapping Device and Kernel Memory and Chapter 11, Device Context Management for details.