Writing Device Drivers
    
D
 
 data alignment for SPARC ( Index Term Link )
 
 data corruption
  control data ( Index Term Link )
  detecting ( Index Term Link )
  device management data ( Index Term Link )
  malignant, definition of ( Index Term Link )
  misleading, definition of ( Index Term Link )
  of received data ( Index Term Link )
 
 data sharing
  using devmap() ( Index Term Link )
  using ioctl() ( Index Term Link )
  using mmap() ( Index Term Link )
 
 data storage classes ( Index Term Link )
 
 data structures
  dev_ops structure ( Index Term Link )
  GLDv2 ( Index Term Link ) ( Index Term Link )
  modldrv structure ( Index Term Link )
 
 data transfers, character drivers ( Index Term Link )
 
 ddi_cb_register() function ( Index Term Link )
 
 ddi_cb_unregister() function ( Index Term Link )
 
 DDI-compliant drivers
  byte ordering ( Index Term Link )
  compliance testing ( Index Term Link )
 
 ddi_create_minor_node() function ( Index Term Link )
 
 ddi_device_acc_attr structure ( Index Term Link )
 
 ddi_device_copy() function ( Index Term Link )
 
 ddi_device_zero() function ( Index Term Link )
 
 ddi_devid_free() function ( Index Term Link )
 
 DDI/DKI
  See also LDI
  design considerations ( Index Term Link )
  and disk performance ( Index Term Link )
  overview ( Index Term Link )
  purpose in kernel ( Index Term Link )
 
 ddi_dma_attr structure ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_dma_cookie structure ( Index Term Link )
 
 ddi_dma_getwin() function ( Index Term Link )
 
 ddi_dma_mem_alloc() function ( Index Term Link )
 
 ddi_dma_nextseg() function ( Index Term Link )
 
 ddi_dma_sync() function ( Index Term Link ) ( Index Term Link )
 
 ddi_driver_major() function ( Index Term Link ) ( Index Term Link )
 
 ddi_enter_critical() function ( Index Term Link )
 
 ddi_eventcookie_t ( Index Term Link )
 
 ddi_fm_acc_err_clear() function ( Index Term Link )
 
 ddi_fm_acc_err_get() function ( Index Term Link ) ( Index Term Link )
 
 ddi_fm_capable() function ( Index Term Link )
 
 ddi_fm_dma_err_clear() function ( Index Term Link )
 
 ddi_fm_dma_err_get() function ( Index Term Link )
 
 ddi_fm_ereport_post() function ( Index Term Link ) ( Index Term Link )
 
 ddi_fm_error structure ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_fm_fini() function ( Index Term Link )
 
 ddi_fm_handler_register() function ( Index Term Link ) ( Index Term Link )
 
 ddi_fm_handler_unregister() function ( Index Term Link )
 
 ddi_fm_init() function ( Index Term Link )
 
 ddi_fm_service_impact() function ( Index Term Link )
 
 DDI function tables ( Index Term Link )
 
 ddi_get()X functions ( Index Term Link ) ( Index Term Link )
 
 ddi_get_cred() function ( Index Term Link ) ( Index Term Link )
 
 ddi_get_driver_private() function ( Index Term Link ) ( Index Term Link )
 
 ddi_get_instance() function ( Index Term Link )
 
 ddi_get_lbolt() function ( Index Term Link )
 
 ddi_get_pid() function ( Index Term Link )
 
 ddi_get_time() function ( Index Term Link )
 
 DDI_INFO_DEVT2DEVINFO ( Index Term Link )
 
 DDI_INFO_DEVT2INSTANCE ( Index Term Link )
 
 ddi_intr_add_handler() function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_add_softint() function ( Index Term Link )
 
 ddi_intr_alloc() function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_block_disable() function ( Index Term Link )
 
 ddi_intr_block_enable() function ( Index Term Link )
 
 DDI_INTR_CLAIMED ( Index Term Link )
 
 ddi_intr_clr_mask() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_disable() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_dup_handler() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_enable() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_free() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_get_cap() function ( Index Term Link )
 
 ddi_intr_get_hilevel_pri() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_get_navail() function ( Index Term Link )
 
 ddi_intr_get_nintrs() function ( Index Term Link )
 
 ddi_intr_get_pending() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_get_pri() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_get_softint_pri() function ( Index Term Link )
 
 ddi_intr_get_supported_types() function ( Index Term Link )
 
 ddi_intr_hilevel() function ( Index Term Link )
 
 ddi_intr_remove_handler() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_remove_softint() function ( Index Term Link )
 
 ddi_intr_set_cap() function ( Index Term Link )
 
 ddi_intr_set_mask() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_set_nreq() function ( Index Term Link )
 
 ddi_intr_set_pri() function ( Index Term Link )
 
 ddi_intr_set_softint_pri() function ( Index Term Link ) ( Index Term Link )
 
 ddi_intr_trigger_softint() function ( Index Term Link ) ( Index Term Link )
 
 DDI_INTR_UNCLAIMED ( Index Term Link )
 
 ddi_log_sysevent() function ( Index Term Link ) ( Index Term Link )
 
 ddi_model_convert_from() function ( Index Term Link )
 
 ddi_peek() function ( Index Term Link )
 
 ddi_poke() function ( Index Term Link )
 
 ddi_prop_free() function ( Index Term Link )
 
 ddi_prop_get_int() function ( Index Term Link )
 
 ddi_prop_lookup() function ( Index Term Link )
 
 ddi_prop_lookup_string() function ( Index Term Link )
 
 ddi_prop_op() function ( Index Term Link )
 
 ddi_ptob() function ( Index Term Link )
 
 ddi_put()X functions ( Index Term Link ) ( Index Term Link )
 
 ddi_regs_map_setup() function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_removing_power() function ( Index Term Link )
 
 ddi_rep_get()X functions ( Index Term Link )
 
 ddi_rep_put()X functions ( Index Term Link )
 
 DDI_RESUME, detach() function ( Index Term Link )
 
 ddi_set_driver_private() function ( Index Term Link )
 
 DDI_SUSPEND, detach() function ( Index Term Link )
 
 ddi_umem_alloc() function ( Index Term Link ) ( Index Term Link )
 
 ddi_umem_free() function ( Index Term Link )
 
 DDX module ( Index Term Link )
 
 DE (diagnosis engine), definition ( Index Term Link )
 
 deadman kernel feature ( Index Term Link )
 
 DEBUG symbol ( Index Term Link ) ( Index Term Link )
 
 debugging
  ASSERT() macro ( Index Term Link )
  booting an alternate kernel ( Index Term Link )
  coding hints ( Index Term Link )
  common tasks ( Index Term Link )
  conditional compilation ( Index Term Link )
  console frame buffer drivers ( Index Term Link )
  DEBUG symbol ( Index Term Link )
  detecting kernel memory leaks ( Index Term Link )
  displaying kernel data structures ( Index Term Link )
  system file ( Index Term Link )
  kmdb debugger ( Index Term Link )
  kmem_flags ( Index Term Link )
  mdb debugger ( Index Term Link )
  moddebug ( Index Term Link )
  postmortem ( Index Term Link )
  preparing for disasters ( Index Term Link )
  setting up a serial connection ( Index Term Link )
  setting up a SPARC test system ( Index Term Link )
  setting up an x86 test system ( Index Term Link )
  system registers ( Index Term Link )
  tools ( Index Term Link )
  using kernel variables ( Index Term Link )
  using the SPARC PROM for device debugging ( Index Term Link )
  writing mdb commands ( Index Term Link )
 
 delay() function ( Index Term Link )
  changes to ( Index Term Link )
 
 dependency ( Index Term Link )
 
 deprecated device access functions ( Index Term Link )
 
 deprecated DMA functions ( Index Term Link )
 
 deprecated interrupt functions ( Index Term Link )
 
 deprecated memory allocation functions ( Index Term Link )
 
 deprecated power management functions ( Index Term Link )
 
 deprecated programmed I/O functions ( Index Term Link )
 
 deprecated property functions ( Index Term Link )
 
 deprecated SCSI functions ( Index Term Link )
 
 deprecated time-related functions ( Index Term Link )
 
 deprecated user application kernel functions ( Index Term Link )
 
 deprecated user process information functions ( Index Term Link )
 
 deprecated user space access functions ( Index Term Link )
 
 deprecated virtual memory functions ( Index Term Link )
 
 descriptor tree ( Index Term Link ) ( Index Term Link )
 
 dest_adcent argument, ddi_device_copy(), changes to ( Index Term Link )
 
 detach() entry point
  active power management ( Index Term Link )
  description of ( Index Term Link )
  hot removal ( Index Term Link )
  network drivers ( Index Term Link )
  system power management ( Index Term Link )
 
 detecting kernel memory leaks with mdb ( Index Term Link )
 
 dev_advcnt argument, ddi_device_zero(), changes to ( Index Term Link )
 
 dev_datasz argument, ddi_device_copy(), changes to ( Index Term Link )
 
 dev_datasz argument, ddi_device_zero(), changes to ( Index Term Link )
 
 dev_info_t functions ( Index Term Link )
 
 dev_ops structure, description of ( Index Term Link )
 
 dev_t functions ( Index Term Link )
 
 devfsadm command ( Index Term Link )
 
 device
  alternate settings ( Index Term Link )
  composite ( Index Term Link ) ( Index Term Link )
  configurations ( Index Term Link )
  endpoints ( Index Term Link )
  interface number ( Index Term Link )
  interfaces ( Index Term Link )
  quiesce ( Index Term Link )
  resume ( Index Term Link )
  splitting interfaces ( Index Term Link ) ( Index Term Link )
 
 device access functions
  block drivers ( Index Term Link )
  character drivers ( Index Term Link )
  deprecated ( Index Term Link )
  table ( Index Term Link )
 
 device configuration, entry points ( Index Term Link )
 
 device context management ( Index Term Link )
  entry points ( Index Term Link )
  model ( Index Term Link )
  operation ( Index Term Link )
 
 device-dependency, power.conf entry ( Index Term Link )
 
 device-dependency-property, power.conf entry ( Index Term Link )
 
 device directory, recovering ( Index Term Link )
 
 device drivers
  See also compiling drivers
  See also linking drivers
  See also loading drivers
  64-bit drivers ( Index Term Link ) ( Index Term Link )
  access from within kernel ( Index Term Link )
  aliases ( Index Term Link )
  binding to device node ( Index Term Link ) ( Index Term Link )
  bindings ( Index Term Link )
  block driver ( Index Term Link )
  configuration descriptor clouds ( Index Term Link )
  context ( Index Term Link )
  debugging ( Index Term Link )
   coding hints ( Index Term Link )
   setting up a serial connection ( Index Term Link )
   tools ( Index Term Link )
   using the PROM ( Index Term Link )
  definition ( Index Term Link )
  entry points ( Index Term Link )
  error handling ( Index Term Link )
  header files ( Index Term Link )
  hubd USB hub driver ( Index Term Link )
  loadable interface ( Index Term Link )
  modifying information with update_drv ( Index Term Link )
  modifying permissions ( Index Term Link )
  module configuration ( Index Term Link )
  network drivers ( Index Term Link )
  offlining ( Index Term Link ) ( Index Term Link )
  packaging ( Index Term Link )
  printing messages ( Index Term Link )
  purpose in kernel ( Index Term Link )
  source files ( Index Term Link )
  standard character driver ( Index Term Link )
  testing ( Index Term Link ) ( Index Term Link )
  tuning ( Index Term Link )
  USB driver ( Index Term Link )
  usb_mid USB multi-interface driver ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  using kstats ( Index Term Link )
 
 device ID functions ( Index Term Link )
 
 device information
  binding a driver to a device ( Index Term Link )
  binding a driver to a USB device ( Index Term Link )
  compatible device names ( Index Term Link )
  di_link_next_by_lnode() function ( Index Term Link )
  di_link_next_by_node() function ( Index Term Link )
  di_link_private_get() function ( Index Term Link )
  di_link_private_set() function ( Index Term Link )
  di_link_spectype() function ( Index Term Link )
  di_link_t ( Index Term Link )
  di_link_to_lnode() function ( Index Term Link )
  di_lnode_devinfo() function ( Index Term Link )
  di_lnode_devt() function ( Index Term Link )
  di_lnode_name() function ( Index Term Link )
  di_lnode_next() function ( Index Term Link )
  di_lnode_private_get() function ( Index Term Link )
  di_lnode_private_set() function ( Index Term Link )
  di_lnode_t ( Index Term Link )
  di_node_t ( Index Term Link )
  di_walk_link() function ( Index Term Link )
  di_walk_lnode() function ( Index Term Link )
  DINFOLYR ( Index Term Link )
  LDI ( Index Term Link )
  lnode ( Index Term Link )
  nblocks property ( Index Term Link )
  Nblocks property ( Index Term Link )
  property values ( Index Term Link )
  self-identifying ( Index Term Link )
  tree structure ( Index Term Link ) ( Index Term Link )
 
 device instances ( Index Term Link )
 
 device interrupts, See interrupts; interrupt handling
 
 device layering, See LDI
 
 device memory
  D_DEVMAP flag in cb_ops ( Index Term Link )
  mapping ( Index Term Link ) ( Index Term Link )
 
 device node ( Index Term Link )
 
 device number, description of ( Index Term Link )
 
 device polling ( Index Term Link )
  in character drivers ( Index Term Link )
  chpoll() function ( Index Term Link )
  poll() function ( Index Term Link )
 
 device power management
  components ( Index Term Link )
  definition of ( Index Term Link )
  dependency ( Index Term Link )
  entry points ( Index Term Link )
  interfaces ( Index Term Link )
  model ( Index Term Link )
  pm_busy_component() function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  pm_idle_component() function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  pm_lower_power() function ( Index Term Link ) ( Index Term Link )
  pm_raise_power() function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  power() entry point ( Index Term Link ) ( Index Term Link )
  power() function ( Index Term Link )
  power levels ( Index Term Link )
  state transitions ( Index Term Link )
  usb_create_pm_components() function ( Index Term Link )
  USB devices ( Index Term Link )
 
 device registers, mapping ( Index Term Link )
 
 device state in power management ( Index Term Link )
 
 device tree
  displaying ( Index Term Link )
  navigating, in debugger ( Index Term Link )
  overview ( Index Term Link )
  purpose in kernel ( Index Term Link )
 
 device usage ( Index Term Link )
  See LDI
 
 /devices directory
  description of ( Index Term Link )
  displaying the device tree ( Index Term Link )
 
 devinfo tree ( Index Term Link )
 
 devmap_ entry point, devmap_access() function ( Index Term Link )
 
 devmap_ entry points
  devmap() function ( Index Term Link )
  devmap_access() function ( Index Term Link )
  devmap_contextmgt()function ( Index Term Link )
  devmap_dup() function ( Index Term Link )
  devmap_map() function ( Index Term Link )
  devmap_unmap() function ( Index Term Link )
 
 devmap_ functions
  devmap_devmem_setup() function ( Index Term Link )
  devmap_load() function ( Index Term Link )
  devmap_umem_setup() function ( Index Term Link )
  devmap_unload() function ( Index Term Link )
 
 diagnosis engine, definition ( Index Term Link )
 
 .dict dictionary files ( Index Term Link )
 
 disaster recovery ( Index Term Link )
 
 disk
  I/O controls ( Index Term Link )
  performance ( Index Term Link )
 
 disk driver testing ( Index Term Link )
 
 DKI, See DDI/DKI
 
 DL_ETHER, network statistics ( Index Term Link )
 
 DLIOCRAW, ioctl() function ( Index Term Link )
 
 DLPI (Data Link Provider Interface), See network drivers, GLDv2
 
 DLPI primitives, DL_GET_STATISTICS_REQ ( Index Term Link )
 
 DMA
  buffer allocation ( Index Term Link )
  burst sizes ( Index Term Link )
  callbacks ( Index Term Link )
  cookie ( Index Term Link ) ( Index Term Link )
  freeing handle ( Index Term Link )
  freeing resources ( Index Term Link )
  handle ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  object ( Index Term Link )
  object locking ( Index Term Link )
  operations ( Index Term Link )
  physical addresses ( Index Term Link )
  private buffer allocation ( Index Term Link )
  register structure ( Index Term Link )
  resource allocation ( Index Term Link )
  restrictions ( Index Term Link )
  transfers ( Index Term Link ) ( Index Term Link )
  virtual addresses ( Index Term Link )
  windows ( Index Term Link ) ( Index Term Link )
 
 DMA functions ( Index Term Link )
  deprecated ( Index Term Link )
 
 driver binding name ( Index Term Link )
 
 driver.conf files, See hardware configuration files
 
 driver instances ( Index Term Link )
 
 driver module entry points, See entry points
 
 drivers, requests from user applications ( Index Term Link )
 
 drv_getparm() function, changes to ( Index Term Link )
 
 drv_usecwait(9F) ( Index Term Link )
 
 DTrace
  definition ( Index Term Link )
  task queues ( Index Term Link )
 
 dump() entry point, block drivers ( Index Term Link )
 
 DVMA
  SBus slots supporting ( Index Term Link )
  virtual addresses ( Index Term Link )
 
 dynamic memory allocation ( Index Term Link )