Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
    
 
Kernel Functions for DriversIntro(9F)


NAME

 Intro, intro - introduction to DDI/DKI functions

DESCRIPTION

 

Section 9F describes the kernel functions available for use by device drivers. See Intro(9E) for an overview of device driver interfaces.

In this section, the information for each driver function is organized under the following headings:

  • NAME summarizes the function's purpose.
  • SYNOPSIS shows the syntax of the function's entry point in the source code. #include directives are shown for required headers.
  • INTERFACE LEVEL describes any architecture dependencies.
  • ARGUMENTS describes any arguments required to invoke the function.
  • DESCRIPTION describes general information about the function.
  • RETURN VALUES describes the return values and messages that can result from invoking the function.
  • CONTEXT indicates from which driver context (user, kernel, interrupt, or high-level interrupt) the function can be called.
  • A driver function has user context if it was directly invoked because of a user thread. The read(9E) entry point of the driver, invoked by a read(2) system call, has user context.
  • A driver function has kernel context if was invoked by some other part of the kernel. In a block device driver, the strategy(9E) entry point may be called by the page daemon to write pages to the device. The page daemon has no relation to the current user thread, so in this case strategy(9E) has kernel context.
  • Interrupt context is kernel context, but also has an interrupt level associated with it. Driver interrupt routines have interrupt context.
  • High-level interrupt context is a more restricted form of interrupt context. If ddi_intr_hilevel(9F) indicates that an interrupt is high-level, driver interrupt routines added for that interrupt with ddi_add_intr(9F) run in high-level interrupt context. These interrupt routines are only allowed to call ddi_trigger_softintr(9F) mutex_enter(9F) and mutex_exit(9F). Furthermore, mutex_enter(9F) and mutex_exit(9F) may only be called on mutexes initialized with the ddi_iblock_cookie returned by ddi_get_iblock_cookie(9F).
  • SEE ALSO indicates functions that are related by usage and sources, and which can be referred to for further information.
  • EXAMPLES shows how the function can be used in driver code.

Every driver MUST include <sys/ddi.h> and <sys/sunddi.h>, in that order, and as the last files the driver includes.

STREAMS Kernel Function Summary

 

The following table summarizes the STREAMS functions described in this section.
RoutineType
adjmsgDDI/DKI
allocbDDI/DKI
backqDDI/DKI
bcanputDDI/DKI
bcanputnextDDI/DKI
bufcallDDI/DKI
canputDDI/DKI
canputnextDDI/DKI
clrbufDDI/DKI
copybDDI/DKI
copymsgDDI/DKI
datamsgDDI/DKI
dupbDDI/DKI
dupmsgDDI/DKI
enableokDDI/DKI
esballocDDI/DKI
esbbcallDDI/DKI
flushbandDDI/DKI
flushqDDI/DKI
freebDDI/DKI
freemsgDDI/DKI
freezestrDDI/DKI
getqDDI/DKI
insqDDI/DKI
linkbDDI/DKI
msgdsizeDDI/DKI
msgpullupDDI/DKI
mt-streamsSolaris DDI
noenableDDI/DKI
OTHERQDDI/DKI
pullupmsgDDI/DKI
putDDI/DKI
putbqDDI/DKI
putctlDDI/DKI
putctl1DDI/DKI
putnextDDI/DKI
putnextctlDDI/DKI
putqDDI/DKI
qbufcallSolaris DDI
qenableDDI/DKI
qprocsonDDI/DKI
qprocsoffDDI/DKI
qreplyDDI/DKI
qsizeDDI/DKI
qtimeoutSolaris DDI
qunbufcallSolaris DDI
quntimeoutSolaris DDI
qwaitSolaris DDI
qwait_sigSolaris DDI
qwriterSolaris DDI
RDDDI/DKI
rmvbDDI/DKI
rmvqDDI/DKI
SAMESTRDDI/DKI
strlogDDI/DKI
strqgetDDI/DKI
strqsetDDI/DKI
testbDDI/DKI
unbufcallDDI/DKI
unfreezestrDDI/DKI
unlinkbDDI/DKI
WRDDI/DKI

The following table summarizes the functions not specific to STREAMS.
RoutineType
ASSERTDDI/DKI
anocancelSolaris DDI
aphysioSolaris DDI
bcmpDDI/DKI
bcopyDDI/DKI
biodoneDDI/DKI
biocloneSolaris DDI
biofiniSolaris DDI
bioinitSolaris DDI
biomodifiedSolaris DDI
biosizeSolaris DDI
bioerrorSolaris DDI
bioresetSolaris DDI
biowaitDDI/DKI
bp_mapinDDI/DKI
bp_mapoutDDI/DKI
btopDDI/DKI
btoprDDI/DKI
bzeroDDI/DKI
cmn_errDDI/DKI
copyinDDI/DKI
copyoutDDI/DKI
cv_broadcastSolaris DDI
cv_destroySolaris DDI
cv_initSolaris DDI
cv_signalSolaris DDI
cv_timedwaitSolaris DDI
cv_waitSolaris DDI
cv_wait_sigSolaris DDI
ddi_add_intrSolaris DDI
ddi_add_softintrSolaris DDI
ddi_btopSolaris DDI
ddi_btoprSolaris DDI
ddi_copyinSolaris DDI
ddi_copyoutSolaris DDI
ddi_create_minor_nodeSolaris DDI
ddi_dev_is_sidSolaris DDI
ddi_dev_nintrsSolaris DDI
ddi_dev_nregsSolaris DDI
ddi_dev_regsizeSolaris DDI
ddi_device_copySolaris DDI
ddi_device_zeroSolaris DDI
ddi_devmap_segmapSolaris DDI
ddi_dma_addr_bind_handleSolaris DDI
ddi_dma_addr_setupSolaris DDI
ddi_dma_alloc_handleSolaris DDI
ddi_dma_buf_bind_handleSolaris DDI
ddi_dma_buf_setupSolaris DDI
ddi_dma_burstsizesSolaris DDI
ddi_dma_coffSolaris SPARC DDI
ddi_dma_curwinSolaris SPARC DDI
ddi_dma_devalignSolaris DDI
ddi_dma_freeSolaris DDI
ddi_dma_free_handleSolaris DDI
ddi_dma_getwinSolaris DDI
ddi_dma_htocSolaris SPARC DDI
ddi_dma_mem_allocSolaris DDI
ddi_dma_mem_freeSolaris DDI
ddi_dma_movwinSolaris SPARC DDI
ddi_dma_nextcookieSolaris DDI
ddi_dma_nextsegSolaris DDI
ddi_dma_nextwinSolaris DDI
ddi_dma_numwinSolaris DDI
ddi_dma_segtocookieSolaris DDI
ddi_dma_set_sbus64Solaris DDI
ddi_dma_setupSolaris DDI
ddi_dma_syncSolaris DDI
ddi_dma_unbind_handleSolaris DDI
ddi_dmaeSolaris IA DDI
ddi_dmae_1stpartySolaris IA DDI
ddi_dmae_allocSolaris IA DDI
ddi_dmae_disableSolaris IA DDI
ddi_dmae_enableSolaris IA DDI
ddi_dmae_getattrSolaris IA DDI
ddi_dmae_getcntSolaris IA DDI
ddi_dmae_getlimSolaris IA DDI
ddi_dmae_progSolaris IA DDI
ddi_dmae_releaseSolaris IA DDI
ddi_dmae_stopSolaris IA DDI
ddi_enter_criticalSolaris DDI
ddi_exit_criticalSolaris DDI
ddi_ffsSolaris DDI
ddi_flsSolaris DDI
ddi_get16Solaris DDI
ddi_get32Solaris DDI
ddi_get64Solaris DDI
ddi_get8Solaris DDI
ddi_get_credSolaris DDI
ddi_get_driver_privateSolaris DDI
ddi_get_iblock_cookieSolaris DDI
ddi_get_instanceSolaris DDI
ddi_get_nameSolaris DDI
ddi_get_parentSolaris DDI
ddi_get_soft_iblock_cookieSolaris DDI
ddi_get_soft_stateSolaris DDI
ddi_getbSolaris DDI
ddi_getlSolaris DDI
ddi_getllSolaris DDI
ddi_getlongpropSolaris DDI
ddi_getlongprop_bufSolaris DDI
ddi_getpropSolaris DDI
ddi_getproplenSolaris DDI
ddi_getwSolaris DDI
ddi_intr_hilevelSolaris DDI
ddi_io_get16Solaris DDI
ddi_io_get32Solaris DDI
ddi_io_get8Solaris DDI
ddi_io_getbSolaris DDI
ddi_io_getlSolaris DDI
ddi_io_getwSolaris DDI
ddi_io_put16Solaris DDI
ddi_io_put32Solaris DDI
ddi_io_put8Solaris DDI
ddi_io_putbSolaris DDI
ddi_io_putlSolaris DDI
ddi_io_putwSolaris DDI
ddi_io_rep_get16Solaris DDI
ddi_io_rep_get32Solaris DDI
ddi_io_rep_get8Solaris DDI
ddi_io_rep_getbSolaris DDI
ddi_io_rep_getlSolaris DDI
ddi_io_rep_getwSolaris DDI
ddi_io_rep_put16Solaris DDI
ddi_io_rep_put32Solaris DDI
ddi_io_rep_put8Solaris DDI
ddi_io_rep_putbSolaris DDI
ddi_io_rep_putlSolaris DDI
ddi_io_rep_putwSolaris DDI
ddi_iominSolaris DDI
ddi_iopb_allocSolaris DDI
ddi_iopb_freeSolaris DDI
ddi_map_regsSolaris DDI
ddi_mapdevSolaris DDI
ddi_mapdev_interceptSolaris DDI
ddi_mapdev_nointerceptSolaris DDI
ddi_mapdev_set_device_acc_attrSolaris DDI
ddi_mem_allocSolaris DDI
ddi_mem_freeSolaris DDI
ddi_mem_get16Solaris DDI
ddi_mem_get32Solaris DDI
ddi_mem_get64Solaris DDI
ddi_mem_get8Solaris DDI
ddi_mem_getbSolaris DDI
ddi_mem_getlSolaris DDI
ddi_mem_getllSolaris DDI
ddi_mem_getwSolaris DDI
ddi_mem_put16Solaris DDI
ddi_mem_put32Solaris DDI
ddi_mem_put64Solaris DDI
ddi_mem_put8Solaris DDI
ddi_mem_putbSolaris DDI
ddi_mem_putlSolaris DDI
ddi_mem_putllSolaris DDI
ddi_mem_putwSolaris DDI
ddi_mem_rep_get16Solaris DDI
ddi_mem_rep_get32Solaris DDI
ddi_mem_rep_get64Solaris DDI
ddi_mem_rep_get8Solaris DDI
ddi_mem_rep_getbSolaris DDI
ddi_mem_rep_getlSolaris DDI
ddi_mem_rep_getllSolaris DDI
ddi_mem_rep_getwSolaris DDI
ddi_mem_rep_put16Solaris DDI
ddi_mem_rep_put32Solaris DDI
ddi_mem_rep_put64Solaris DDI
ddi_mem_rep_put8Solaris DDI
ddi_mem_rep_putbSolaris DDI
ddi_mem_rep_putlSolaris DDI
ddi_mem_rep_putllSolaris DDI
ddi_mem_rep_putwSolaris DDI
ddi_mmap_get_modelSolaris DDI
ddi_model_convert_fromSolaris DDI
ddi_node_nameSolaris DDI
ddi_peek16Solaris DDI
ddi_peek32Solaris DDI
ddi_peek64Solaris DDI
ddi_peek8Solaris DDI
ddi_peekcSolaris DDI
ddi_peekdSolaris DDI
ddi_peeklSolaris DDI
ddi_peeksSolaris DDI
ddi_poke16Solaris DDI
ddi_poke32Solaris DDI
ddi_poke64Solaris DDI
ddi_poke8Solaris DDI
ddi_pokecSolaris DDI
ddi_pokedSolaris DDI
ddi_pokelSolaris DDI
ddi_pokesSolaris DDI
ddi_prop_createSolaris DDI
ddi_prop_existsSolaris DDI
ddi_prop_freeSolaris DDI
ddi_prop_get_intSolaris DDI
ddi_prop_lookupSolaris DDI
ddi_prop_lookup_byte_arraySolaris DDI
ddi_prop_lookup_int_arraySolaris DDI
ddi_prop_lookup_stringSolaris DDI
ddi_prop_lookup_string_arraySolaris DDI
ddi_prop_modifySolaris DDI
ddi_prop_opSolaris DDI
ddi_prop_removeSolaris DDI
ddi_prop_remove_allSolaris DDI
ddi_prop_undefineSolaris DDI
ddi_prop_updateSolaris DDI
ddi_prop_update_byte_arraySolaris DDI
ddi_prop_update_intSolaris DDI
ddi_prop_update_int_arraySolaris DDI
ddi_prop_update_stringSolaris DDI
ddi_prop_update_string_arraySolaris DDI
ddi_ptobSolaris DDI
ddi_put16Solaris DDI
ddi_put32Solaris DDI
ddi_put64Solaris DDI
ddi_put8Solaris DDI
ddi_putbSolaris DDI
ddi_putlSolaris DDI
ddi_putllSolaris DDI
ddi_putwSolaris DDI
ddi_regs_map_freeSolaris DDI
ddi_regs_map_setupSolaris DDI
ddi_remove_intrSolaris DDI
ddi_remove_minor_nodeSolaris DDI
ddi_remove_softintrSolaris DDI
ddi_rep_get16Solaris DDI
ddi_rep_get32Solaris DDI
ddi_rep_get64Solaris DDI
ddi_rep_get8Solaris DDI
ddi_rep_getbSolaris DDI
ddi_rep_getlSolaris DDI
ddi_rep_getllSolaris DDI
ddi_rep_getwSolaris DDI
ddi_rep_put16Solaris DDI
ddi_rep_put32Solaris DDI
ddi_rep_put64Solaris DDI
ddi_rep_put8Solaris DDI
ddi_rep_putbSolaris DDI
ddi_rep_putlSolaris DDI
ddi_rep_putllSolaris DDI
ddi_rep_putwSolaris DDI
ddi_report_devSolaris DDI
ddi_root_nodeSolaris DDI
ddi_segmapSolaris DDI
ddi_segmap_setupSolaris DDI
ddi_set_driver_privateSolaris DDI
ddi_slaveonlySolaris DDI
ddi_soft_stateSolaris DDI
ddi_soft_state_finiSolaris DDI
ddi_soft_state_freeSolaris DDI
ddi_soft_state_initSolaris DDI
ddi_soft_state_zallocSolaris DDI
ddi_trigger_softintrSolaris DDI
ddi_umem_allocSolaris DDI
ddi_umem_freeSolaris DDI
ddi_unmap_regsSolaris DDI
delayDDI/DKI
devmap_default_accessSolaris DDI
devmap_devmem_setupSolaris DDI
devmap_do_ctxmgtSolaris DDI
devmap_loadSolaris DDI
devmap_set_ctx_timeoutSolaris DDI
devmap_setupSolaris DDI
devmap_umem_setupSolaris DDI
devmap_unloadSolaris DDI
disksortSolaris DDI
drv_getparmDDI/DKI
drv_hztousecDDI/DKI
drv_privDDI/DKI
drv_usectohzDDI/DKI
drv_usecwaitDDI/DKI
free_pktiopbSolaris DDI
freerbufDDI/DKI
get_pktiopbSolaris DDI
geterrorDDI/DKI
getmajorDDI/DKI
getminorDDI/DKI
getrbufDDI/DKI
hat_getkpfnumDKI only
inbSolaris IA DDI
inlSolaris IA DDI
inwSolaris IA DDI
kmem_allocDDI/DKI
kmem_freeDDI/DKI
kmem_zallocDDI/DKI
kstat_createSolaris DDI
kstat_deleteSolaris DDI
kstat_installSolaris DDI
kstat_named_initSolaris DDI
kstat_queueSolaris DDI
kstat_runq_back_to_waitqSolaris DDI
kstat_runq_enterSolaris DDI
kstat_runq_exitSolaris DDI
kstat_waitq_enterSolaris DDI
kstat_waitq_exitSolaris DDI
kstat_waitq_to_runqSolaris DDI
makecom_g0Solaris DDI
makecom_g0_sSolaris DDI
makecom_g1Solaris DDI
makecom_g5Solaris DDI
makedeviceDDI/DKI
maxDDI/DKI
minDDI/DKI
minphysSolaris DDI
mod_infoSolaris DDI
mod_installSolaris DDI
mod_removeSolaris DDI
mutex_destroySolaris DDI
mutex_enterSolaris DDI
mutex_exitSolaris DDI
mutex_initSolaris DDI
mutex_ownedSolaris DDI
mutex_tryenterSolaris DDI
nochpollSolaris DDI
nodevDDI/DKI
nulldevDDI/DKI
numtosSolaris DDI
outbSolaris IA DDI
outlSolaris IA DDI
outwSolaris IA DDI
pci_config_get16Solaris DDI
pci_config_get32Solaris DDI
pci_config_get64Solaris DDI
pci_config_get8Solaris DDI
pci_config_getbSolaris DDI
pci_config_getlSolaris DDI
pci_config_getwSolaris DDI
pci_config_put16Solaris DDI
pci_config_put32Solaris DDI
pci_config_put64Solaris DDI
pci_config_put8Solaris DDI
pci_config_putbSolaris DDI
pci_config_putlSolaris DDI
pci_config_putwSolaris DDI
pci_config_setupSolaris DDI
pci_config_teardownSolaris DDI
physioSolaris DDI
pollwakeupDDI/DKI
proc_refSolaris DDI
proc_signalSolaris DDI
proc_unrefSolaris DDI
ptobDDI/DKI
repinsbSolaris IA DDI
repinsdSolaris IA DDI
repinswSolaris IA DDI
repoutsbSolaris IA DDI
repoutsdSolaris IA DDI
repoutswSolaris IA DDI
rmallocDDI/DKI
rmalloc_waitDDI/DKI
rmallocmapDDI/DKI
rmallocmap_waitDDI/DKI
rmfreeDDI/DKI
rmfreemapDDI/DKI
rw_destroySolaris DDI
rw_downgradeSolaris DDI
rw_enterSolaris DDI
rw_exitSolaris DDI
rw_initSolaris DDI
rw_read_lockedSolaris DDI
rw_tryenterSolaris DDI
rw_tryupgradeSolaris DDI
scsi_abortSolaris DDI
scsi_alloc_consistent_bufSolaris DDI
scsi_cnameSolaris DDI
scsi_destroy_pktSolaris DDI
scsi_dmafreeSolaris DDI
scsi_dmagetSolaris DDI
scsi_dnameSolaris DDI
scsi_errmsgSolaris DDI
scsi_free_consistent_bufSolaris DDI
scsi_hba_attachSolaris DDI
scsi_hba_attach_setupSolaris DDI
scsi_hba_detachSolaris DDI
scsi_hba_finiSolaris DDI
scsi_hba_initSolaris DDI
scsi_hba_lookup_capstrSolaris DDI
scsi_hba_pkt_allocSolaris DDI
scsi_hba_pkt_freeSolaris DDI
scsi_hba_probeSolaris DDI
scsi_hba_tran_allocSolaris DDI
scsi_hba_tran_freeSolaris DDI
scsi_ifgetcapSolaris DDI
scsi_ifsetcapSolaris DDI
scsi_init_pktSolaris DDI
scsi_logSolaris DDI
scsi_mnameSolaris DDI
scsi_pktallocSolaris DDI
scsi_pktfreeSolaris DDI
scsi_pollSolaris DDI
scsi_probeSolaris DDI
scsi_resallocSolaris DDI
scsi_resetSolaris DDI
scsi_reset_notifySolaris DDI
scsi_resfreeSolaris DDI
scsi_rnameSolaris DDI
scsi_slaveSolaris DDI
scsi_snameSolaris DDI
scsi_sync_pktSolaris DDI
scsi_transportSolaris DDI
scsi_unprobeSolaris DDI
scsi_unslaveSolaris DDI
sema_destroySolaris DDI
sema_initSolaris DDI
sema_pSolaris DDI
sema_p_sigSolaris DDI
sema_trypSolaris DDI
sema_vSolaris DDI
sprintfSolaris DDI
stoiSolaris DDI
strchrSolaris DDI
strcmpSolaris DDI
strcpySolaris DDI
strlenSolaris DDI
strncmpSolaris DDI
strncpySolaris DDI
swabDDI/DKI
timeoutDDI/DKI
uiomoveDDI/DKI
untimeoutDDI/DKI
ureadcDDI/DKI
uwritecDDI/DKI
va_argSolaris DDI
va_endSolaris DDI
va_startSolaris DDI
vcmn_errDDI/DKI
vsprintfSolaris DDI

SEE ALSO

 

Intro(9E)


SunOS 5.9Go To TopLast Changed 15 May 2001

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.