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