devmap_callback_ctl(9S)
NAME
devmap_callback_ctl - device mapping-control structure
SYNOPSIS
#include <sys/ddidevmap.h>
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).
DESCRIPTION
A devmap_callback_ctl structure describes a set of callback
routines that are called by the system to notify a device
driver to manage events on the device mappings created by
devmap_setup(9F) or ddi_devmap_segmap(9F).
Device drivers pass the initialized devmap_callback_ctl
structure to either devmap_devmem_setup(9F) or
devmap_umem_setup(9F) in the devmap(9E) entry point during
the mapping setup. The system makes a private copy of the
structure for later use. Device drivers can specify dif-
ferent devmap_callback_ctl for different mappings.
A device driver should allocate the device mapping control
structure and initialize the following fields, if the driver
wants the entry points to be called by the system:
devmap_rev
Version number. Set this to DEVMAP_OPS_REV.
devmap_map
Set to the address of the devmap_map(9E) entry
point or to NULL if the driver does not support
this callback. If set, the system calls the
devmap_map(9E) entry point during the mmap(2)
system call. The drivers typically allocate
driver private data structure in this function
and return the pointer to the private data struc-
ture to the system for later use.
devmap_access
Set to the address of the devmap_access(9E) entry
point or to NULL if the driver does not support
this callback. If set, the system calls the
driver's devmap_access(9E) entry point during
memory access. The system expects
devmap_access(9E) to call either
devmap_do_ctxmgt(9F) or devmap_default_access(9F)
to load the memory address translations before it
returns to the system.
devmap_dup
Set to the address of the devmap_dup(9E) entry
point or to NULL if the driver does not support
this call. If set, the system calls the
devmap_dup(9E) entry point during the fork(2)
system call.
devmap_unmap
Set to the address of the devmap_unmap(9E) entry
point or to NULL if the driver does not support
this call. If set, the system will call the
devmap_unmap(9E) entry point during the munmap(2)
or exit(2) system calls.
STRUCTURE MEMBERS
int devmap_rev;
int (*devmap_map)(devmap_cookie_t dhp, dev_t dev, uint_t flags,
offset_t off, size_t len, void **pvtp);
int (*devmap_access)(devmap_cookie_t dhp, void *pvtp, offset_t off,
size_t len, uint_t type, uint_t rw);
int (*devmap_dup)(devmap_cookie_t dhp, void *pvtp,
devmap_cookie_t new_dhp, void **new_pvtp);
void (*devmap_unmap)(devmap_cookie_t dhp, void *pvtp, offset_t off,
size_t len, devmap_cookie_t new_dhp1, void **new_pvtp1,
devmap_cookie_t new_dhp2, void **new_pvtp2);
SEE ALSO
exit(2), fork(2), mmap(2), munmap(2), devmap(9E),
devmap_access(9E), devmap_dup(9E), devmap_map(9E),
devmap_unmap(9E), ddi_devmap_segmap(9F),
devmap_default_access(9F), devmap_devmem_setup(9F),
devmap_do_ctxmgt(9F), devmap_setup(9F),
devmap_umem_setup(9F)
Writing Device Drivers
Man(1) output converted with
man2html