DEVMAP_CALLBACK_CTL(9S)  Data Structures for Drivers DEVMAP_CALLBACK_CTL(9S)
NAME
       devmap_callback_ctl - device mapping-control structure
SYNOPSIS
       #include <sys/ddidevmap.h>
INTERFACE LEVEL
       illumos DDI specific (illumos 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 different 
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 structure 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                                July 24, 1996        DEVMAP_CALLBACK_CTL(9S)