Device Driver Tutorial
    
A
 
 add_drv command ( Index Term Link ) ( Index Term Link )
  use in modifying existing drivers ( Index Term Link )
 
 alternate kernels, use in testing ( Index Term Link )
 
 ASSERT() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 attach() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
    
B
 
 blk device ( Index Term Link )
 
 block device ( Index Term Link )
 
 boot command ( Index Term Link )
 
 bzero() kernel function ( Index Term Link )
    
C
 
 cat command ( Index Term Link )
 
 cb_ops driver structure ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 cc command ( Index Term Link )
 
 character device ( Index Term Link )
 
 close() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 cmn_err() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 commands
  add_drv ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  boot ( Index Term Link )
  cat ( Index Term Link )
  cc ( Index Term Link )
  dmesg ( Index Term Link )
  echo ( Index Term Link )
  fsck ( Index Term Link )
  gcc ( Index Term Link )
  kernel ( Index Term Link )
  ld ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  mknod ( Index Term Link )
  modinfo ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  modload ( Index Term Link )
  modunload ( Index Term Link )
  more ( Index Term Link )
  prtconf ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  prtpicl ( Index Term Link )
  rem_drv ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  syslogd ( Index Term Link ) ( Index Term Link )
  update_drv ( Index Term Link )
 
 compiling ( Index Term Link )
 
 condition variables ( Index Term Link )
 
 conditional compilation ( Index Term Link )
 
 condvar() kernel functions ( Index Term Link )
 
 configuration files ( Index Term Link ) ( Index Term Link )
 
 crash dumps, use in testing ( Index Term Link )
 
 cv_broadcast() kernel function ( Index Term Link ) ( Index Term Link )
 
 cv_destroy() kernel function ( Index Term Link ) ( Index Term Link )
 
 cv_init() kernel function ( Index Term Link ) ( Index Term Link )
 
 cv_signal() kernel function ( Index Term Link )
 
 cv_wait() kernel function ( Index Term Link )
 
 cv_wait_sig() kernel function ( Index Term Link ) ( Index Term Link )
    
D
 
 data loss, avoiding while testing ( Index Term Link )
 
 data model
  converting ( Index Term Link ) ( Index Term Link )
 
 ddi_copyin() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_copyout() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_create_minor_node() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_get_instance() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_get_soft_state() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_model_convert_from() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_prop_get_int() kernel function ( Index Term Link )
 
 ddi_prop_lookup() kernel function ( Index Term Link )
 
 ddi_prop_op() kernel function ( Index Term Link ) ( Index Term Link )
 
 ddi_remove_minor_node() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ddi_report_dev() kernel function ( Index Term Link )
 
 ddi_soft_state() kernel function ( Index Term Link )
 
 ddi_soft_state_fini() kernel function ( Index Term Link ) ( Index Term Link )
 
 ddi_soft_state_free() kernel function ( Index Term Link ) ( Index Term Link )
 
 ddi_soft_state_init() kernel function ( Index Term Link ) ( Index Term Link )
 
 ddi_soft_state_zalloc() kernel function ( Index Term Link ) ( Index Term Link )
 
 ddi_umem_alloc() kernel function ( Index Term Link )
 
 ddi_umem_free() kernel function ( Index Term Link ) ( Index Term Link )
 
 deadman kernel feature ( Index Term Link )
 
 debugging device drivers, tips ( Index Term Link )
 
 detach() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 /dev directory ( Index Term Link ) ( Index Term Link )
 
 dev_info device structure ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 dev_ops driver structure ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 devfs devices file system ( Index Term Link )
 
 devfsadmd devices file system administration command ( Index Term Link )
 
 device drivers ( Index Term Link )
  adding ( Index Term Link )
  coding tips ( Index Term Link )
  compiling ( Index Term Link )
  condition variables ( Index Term Link )
  conditional compilation ( Index Term Link )
  debugging tips ( Index Term Link )
  development guidelines ( Index Term Link )
  directories ( Index Term Link )
   adding ( Index Term Link )
  entry points ( Index Term Link ) ( Index Term Link )
   See also entry points
  how used ( Index Term Link )
  I/O controls ( Index Term Link ) ( Index Term Link )
  installing ( Index Term Link ) ( Index Term Link )
  linking ( Index Term Link )
  loading ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  mutexes ( Index Term Link )
  naming conventions ( Index Term Link )
  recommended housekeeping ( Index Term Link )
  removing ( Index Term Link ) ( Index Term Link )
  structures
   See driver structures
  test areas ( Index Term Link )
  testing ( Index Term Link )
  thread synchronization ( Index Term Link )
  tuning ( Index Term Link )
  unloading ( Index Term Link ) ( Index Term Link )
  updating ( Index Term Link )
 
 device instance pointer (dip) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 device number ( Index Term Link )
 
 device structures
  dev_info ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 device tree ( Index Term Link )
 
 devices
  blk ( Index Term Link )
  block ( Index Term Link ) ( Index Term Link )
  character ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  configuration files ( Index Term Link ) ( Index Term Link )
  device tree ( Index Term Link )
  directories ( Index Term Link ) ( Index Term Link )
  exclusive access ( Index Term Link )
  file system
   devfs ( Index Term Link )
   devfsadmd ( Index Term Link )
  instances ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  md metadevice ( Index Term Link )
  names ( Index Term Link )
  nexus ( Index Term Link ) ( Index Term Link )
  numbers ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  prefixes ( Index Term Link ) ( Index Term Link )
  properties ( Index Term Link ) ( Index Term Link )
  pseudo ( Index Term Link ) ( Index Term Link )
  ramdisk ( Index Term Link ) ( Index Term Link )
  raw ( Index Term Link )
  reading ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  special files ( Index Term Link )
  state ( Index Term Link )
  writing ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 /devices directory ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 /devices/pseudo directory ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 devmap() entry point ( Index Term Link )
 
 dmesg command ( Index Term Link )
 
 driver.conf file ( Index Term Link )
 
 driver structures
  cb_ops ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  character and block operations structure ( Index Term Link )
  dev_ops ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  device operations structure ( Index Term Link )
  modinfo ( Index Term Link )
  modldrv ( Index Term Link ) ( Index Term Link )
  modlinkage ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  module linkage structures ( Index Term Link )
 
 drivers, See device drivers
 
 DTrace analyzer ( Index Term Link )
    
E
 
 echo command ( Index Term Link )
 
 entry points
  attach() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  autoconfiguration ( Index Term Link )
  close() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  detach() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  devmap() ( Index Term Link )
  _fini() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  getinfo() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  _info() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  _init() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ioctl() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  loadable module configuration ( Index Term Link )
  open() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  prop_op() ( Index Term Link ) ( Index Term Link )
  read() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  user context ( Index Term Link )
  write() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 /etc/driver_aliases file ( Index Term Link )
 
 /etc/name_to_major file ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
    
F
 
 files
  driver.conf ( Index Term Link )
  /etc/name_to_major ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  system ( Index Term Link )
  /var/adm/messages ( Index Term Link ) ( Index Term Link )
 
 _fini() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 fsck command ( Index Term Link )
 
 functions
  kstat() ( Index Term Link )
  printf() ( Index Term Link )
  signal() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
    
G
 
 gcc command ( Index Term Link )
 
 getinfo() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 getminor() kernel function ( Index Term Link ) ( Index Term Link )
 
 GNU C ( Index Term Link )
    
H
 
 hotplugging ( Index Term Link )
    
I
 
 I/O controls ( Index Term Link ) ( Index Term Link )
 
 _info() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 _init() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 instance number ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 interrupts, avoiding problems ( Index Term Link )
 
 ioctl() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 ioctl() requests, avoiding problems ( Index Term Link )
    
K
 
 kernel ( Index Term Link )
  address space ( Index Term Link ) ( Index Term Link )
  privilege
   See also kernel mode
 
 kernel command ( Index Term Link )
 
 kernel functions
  ASSERT() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  bzero() ( Index Term Link )
  cmn_err() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  condvar() ( Index Term Link )
  cv_broadcast() ( Index Term Link ) ( Index Term Link )
  cv_destroy() ( Index Term Link ) ( Index Term Link )
  cv_init() ( Index Term Link ) ( Index Term Link )
  cv_signal() ( Index Term Link )
  cv_wait() ( Index Term Link )
  cv_wait_sig() ( Index Term Link ) ( Index Term Link )
  ddi_copyin() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ddi_copyout() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ddi_create_minor_node() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ddi_get_instance() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ddi_get_soft_state() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ddi_model_convert_from() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ddi_prop_get_int() ( Index Term Link )
  ddi_prop_lookup() ( Index Term Link )
  ddi_prop_op() ( Index Term Link ) ( Index Term Link )
  ddi_remove_minor_node() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  ddi_report_dev() ( Index Term Link )
  ddi_soft_state() ( Index Term Link )
  ddi_soft_state_fini() ( Index Term Link ) ( Index Term Link )
  ddi_soft_state_free() ( Index Term Link ) ( Index Term Link )
  ddi_soft_state_init() ( Index Term Link ) ( Index Term Link )
  ddi_soft_state_zalloc() ( Index Term Link ) ( Index Term Link )
  ddi_umem_alloc() ( Index Term Link )
  ddi_umem_free() ( Index Term Link ) ( Index Term Link )
  getminor() ( Index Term Link ) ( Index Term Link )
  kmem_alloc() ( Index Term Link )
  kmem_zalloc() ( Index Term Link )
  memcpy() ( Index Term Link )
  mod_info() ( Index Term Link ) ( Index Term Link )
  mod_install() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  mod_remove() ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
  mutex() ( Index Term Link )
  mutex_destroy() ( Index Term Link ) ( Index Term Link )
  mutex_init() ( Index Term Link ) ( Index Term Link )
  mutex_owned() ( Index Term Link )
  nochpoll() ( Index Term Link )
  nodev() ( Index Term Link ) ( Index Term Link )
  nulldev() ( Index Term Link ) ( Index Term Link )
  strlcpy() ( Index Term Link ) ( Index Term Link )
  strncpy() ( Index Term Link )
  uiomove() ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 kernel mode ( Index Term Link )
 
 kernel modules, use in testing ( Index Term Link )
 
 kernel statistics ( Index Term Link )
 
 kernel structures
  uio ( Index Term Link ) ( Index Term Link )
 
 kmdb kernel debugger ( Index Term Link ) ( Index Term Link )
 
 kmem_alloc() kernel function ( Index Term Link )
 
 kmem_zalloc() kernel function ( Index Term Link )
 
 kstat() function ( Index Term Link )
    
L
 
 ld command ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 linking ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
    
M
 
 major number ( Index Term Link ) ( Index Term Link )
 
 mdb modular debugger ( Index Term Link )
 
 memcpy() kernel function ( Index Term Link )
 
 metadevice ( Index Term Link )
 
 minor number ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 mknod() system call ( Index Term Link )
 
 mknod command ( Index Term Link )
 
 mmap() system call ( Index Term Link )
 
 mod_info() kernel function ( Index Term Link ) ( Index Term Link )
 
 mod_install() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 mod_remove() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 moddir kernel variable ( Index Term Link )
 
 modinfo command ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 modinfo driver structure ( Index Term Link )
 
 modldrv driver structure ( Index Term Link ) ( Index Term Link )
 
 modlinkage driver structure ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 modload command ( Index Term Link )
 
 modunload command ( Index Term Link )
 
 more command ( Index Term Link )
 
 mutex() kernel function ( Index Term Link )
 
 mutex_destroy() kernel function ( Index Term Link ) ( Index Term Link )
 
 mutex_init() kernel function ( Index Term Link ) ( Index Term Link )
 
 mutex_owned() kernel function ( Index Term Link )
 
 mutexes ( Index Term Link )
  avoiding problems ( Index Term Link )
    
N
 
 naming, unique prefix for driver symbols ( Index Term Link )
 
 naming conventions ( Index Term Link )
 
 nexus device ( Index Term Link )
 
 nochpoll() kernel function ( Index Term Link )
 
 nodev() kernel function ( Index Term Link ) ( Index Term Link )
 
 nulldev() kernel function ( Index Term Link ) ( Index Term Link )
    
O
 
 open() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 Oracle Solaris Studio ( Index Term Link )
    
P
 
 PCI ID numbers ( Index Term Link )
 
 power management ( Index Term Link )
 
 prefix, unique prefix for driver symbols ( Index Term Link )
 
 prefixes ( Index Term Link ) ( Index Term Link )
 
 printf() function ( Index Term Link )
 
 prop_op() entry point ( Index Term Link ) ( Index Term Link )
 
 protected mode ( Index Term Link )
 
 prtconf command ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 prtpicl command ( Index Term Link )
    
Q
 
 QOTD_BUSY condition ( Index Term Link ) ( Index Term Link )
    
R
 
 raw device ( Index Term Link )
 
 read() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 read() system call ( Index Term Link )
 
 rem_drv command ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 restricted mode ( Index Term Link )
    
S
 
 serial connections, use in testing ( Index Term Link )
 
 signal() function ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 snooping kernel variable ( Index Term Link )
 
 soft state ( Index Term Link )
 
 SPARC
  address space ( Index Term Link )
  compiling ( Index Term Link )
 
 special files ( Index Term Link )
 
 state structures ( Index Term Link ) ( Index Term Link )
 
 strlcpy() kernel function ( Index Term Link ) ( Index Term Link )
 
 strncpy() kernel function ( Index Term Link )
 
 syslogd command ( Index Term Link ) ( Index Term Link )
 
 system calls
  mknod() ( Index Term Link )
  mmap() ( Index Term Link )
  read() ( Index Term Link )
 
 system configuration information file ( Index Term Link )
 
 system crash dumps, use in testing ( Index Term Link )
    
T
 
 testing device drivers ( Index Term Link )
 
 thread synchronization ( Index Term Link )
 
 tuning device drivers, tips ( Index Term Link )
    
U
 
 uio kernel structure ( Index Term Link ) ( Index Term Link )
 
 uiomove() kernel function ( Index Term Link ) ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
 
 update_drv command ( Index Term Link )
 
 user mode ( Index Term Link )
 
 /usr/kernel directory ( Index Term Link ) ( Index Term Link )
    
V
 
 /var/adm/messages file ( Index Term Link ) ( Index Term Link )
 
 volatile keyword ( Index Term Link )
    
W
 
 write() entry point ( Index Term Link ) ( Index Term Link ) ( Index Term Link )
    
X
 
 x86
  address space ( Index Term Link )
  compiling ( Index Term Link )