Kernel Functions for Drivers Intro(9F)
NAME
Intro, intro - introduction to DDI/DKI functions
DESCRIPTION
Section 9F describes the kernel functions available for use
by device drivers.
In this section, the information for each driver function is
organized under the following headings:
o NAME summarizes the function's purpose.
o SYNOPSIS shows the syntax of the function's entry
point in the source code. #include directives are
shown for required headers.
o INTERFACE LEVEL describes any architecture dependen-
cies.
o ARGUMENTS describes any arguments required to invoke
the function.
o DESCRIPTION describes general information about the
function.
o RETURN VALUES describes the return values and mes-
sages that can result from invoking the function.
o 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 con-
text.
Interrupt context is kernel context, but also has an
interrupt level associated with it. Driver inter-
rupt 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
SunOS 5.8 Last change: 13 Oct 1994 1
Kernel Functions for Drivers Intro(9F)
interrupt routines added for that interrupt with
ddi_add_intr(9F) run in high-level interrupt con-
text. 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 ini-
tialized with the ddi_iblock_cookie returned by
ddi_get_iblock_cookie(9F).
o SEE ALSO indicates functions that are related by
usage and sources, and which can be referred to for
further information.
o 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.
Routine Type
adjmsg DDI/DKI
allocb DDI/DKI
backq DDI/DKI
bcanput DDI/DKI
bcanputnext DDI/DKI
bufcall DDI/DKI
canput DDI/DKI
canputnext DDI/DKI
clrbuf DDI/DKI
copyb DDI/DKI
copymsg DDI/DKI
datamsg DDI/DKI
dupb DDI/DKI
dupmsg DDI/DKI
enableok DDI/DKI
esballoc DDI/DKI
esbbcall DDI/DKI
flushband DDI/DKI
flushq DDI/DKI
freeb DDI/DKI
freemsg DDI/DKI
freezestr DDI/DKI
getq DDI/DKI
insq DDI/DKI
linkb DDI/DKI
msgdsize DDI/DKI
msgpullup DDI/DKI
SunOS 5.8 Last change: 13 Oct 1994 2
Kernel Functions for Drivers Intro(9F)
mt-streams Solaris DDI
noenable DDI/DKI
OTHERQ DDI/DKI
pullupmsg DDI/DKI
put DDI/DKI
putbq DDI/DKI
putctl DDI/DKI
putctl1 DDI/DKI
putnext DDI/DKI
putnextctl DDI/DKI
putq DDI/DKI
qbufcall Solaris DDI
qenable DDI/DKI
qprocson DDI/DKI
qprocsoff DDI/DKI
qreply DDI/DKI
qsize DDI/DKI
qtimeout Solaris DDI
qunbufcall Solaris DDI
quntimeout Solaris DDI
qwait Solaris DDI
qwait_sig Solaris DDI
qwriter Solaris DDI
RD DDI/DKI
rmvb DDI/DKI
rmvq DDI/DKI
SAMESTR DDI/DKI
strlog DDI/DKI
strqget DDI/DKI
strqset DDI/DKI
testb DDI/DKI
unbufcall DDI/DKI
unfreezestr DDI/DKI
unlinkb DDI/DKI
WR DDI/DKI
SunOS 5.8 Last change: 13 Oct 1994 3
Kernel Functions for Drivers Intro(9F)
The following table summarizes the functions not specific to
STREAMS.
Routine Type
ASSERT DDI/DKI
anocancel Solaris DDI
aphysio Solaris DDI
bcmp DDI/DKI
bcopy DDI/DKI
biodone DDI/DKI
bioerror Solaris DDI
bioreset Solaris DDI
biowait DDI/DKI
bp_mapin DDI/DKI
bp_mapout DDI/DKI
btop DDI/DKI
btopr DDI/DKI
bzero DDI/DKI
cmn_err DDI/DKI
copyin DDI/DKI
copyout DDI/DKI
cv_broadcast Solaris DDI
cv_destroy Solaris DDI
cv_init Solaris DDI
cv_signal Solaris DDI
cv_timedwait Solaris DDI
cv_wait Solaris DDI
cv_wait_sig Solaris DDI
ddi_add_intr Solaris DDI
ddi_add_softintr Solaris DDI
ddi_btop Solaris DDI
ddi_btopr Solaris DDI
ddi_copyin Solaris DDI
ddi_copyout Solaris DDI
ddi_create_minor_node Solaris DDI
ddi_dev_is_sid Solaris DDI
ddi_dev_nintrs Solaris DDI
ddi_dev_nregs Solaris DDI
ddi_dev_regsize Solaris DDI
ddi_device_copy Solaris DDI
ddi_device_zero Solaris DDI
ddi_dma_addr_bind_handle Solaris DDI
ddi_dma_addr_setup Solaris DDI
ddi_dma_alloc_handle Solaris DDI
ddi_dma_buf_bind_handle Solaris DDI
ddi_dma_buf_setup Solaris DDI
ddi_dma_burstsizes Solaris DDI
ddi_dma_coff Solaris SPARC DDI
ddi_dma_curwin Solaris SPARC DDI
ddi_dma_devalign Solaris DDI
ddi_dma_free Solaris DDI
SunOS 5.8 Last change: 13 Oct 1994 4
Kernel Functions for Drivers Intro(9F)
ddi_dma_free_handle Solaris DDI
ddi_dma_getwin Solaris DDI
ddi_dma_htoc Solaris SPARC DDI
ddi_dma_mem_alloc Solaris DDI
ddi_dma_mem_free Solaris DDI
ddi_dma_movwin Solaris SPARC DDI
ddi_dma_nextcookie Solaris DDI
ddi_dma_nextseg Solaris DDI
ddi_dma_nextwin Solaris DDI
ddi_dma_numwin Solaris DDI
ddi_dma_segtocookie Solaris DDI
ddi_dma_set_sbus64 Solaris DDI
ddi_dma_setup Solaris DDI
ddi_dma_sync Solaris DDI
ddi_dma_unbind_handle Solaris DDI
ddi_dmae Solaris x86 DDI
ddi_dmae_1stparty Solaris x86 DDI
ddi_dmae_alloc Solaris x86 DDI
ddi_dmae_disable Solaris x86 DDI
ddi_dmae_enable Solaris x86 DDI
ddi_dmae_getattr Solaris x86 DDI
ddi_dmae_getcnt Solaris x86 DDI
ddi_dmae_getlim Solaris x86 DDI
ddi_dmae_prog Solaris x86 DDI
ddi_dmae_release Solaris x86 DDI
ddi_dmae_stop Solaris x86 DDI
ddi_enter_critical Solaris DDI
ddi_exit_critical Solaris DDI
ddi_ffs Solaris DDI
ddi_fls Solaris DDI
ddi_get_cred Solaris DDI
ddi_get_driver_private Solaris DDI
ddi_get_iblock_cookie Solaris DDI
ddi_get_instance Solaris DDI
ddi_get_name Solaris DDI
ddi_get_parent Solaris DDI
ddi_get_soft_iblock_cookie Solaris DDI
ddi_get_soft_state Solaris DDI
ddi_getb Solaris DDI
ddi_getl Solaris DDI
ddi_getll Solaris DDI
ddi_getlongprop Solaris DDI
ddi_getlongprop_buf Solaris DDI
ddi_getprop Solaris DDI
ddi_getproplen Solaris DDI
ddi_getw Solaris DDI
ddi_intr_hilevel Solaris DDI
ddi_io_getb Solaris DDI
ddi_io_getl Solaris DDI
ddi_io_getw Solaris DDI
ddi_io_putb Solaris DDI
ddi_io_putl Solaris DDI
SunOS 5.8 Last change: 13 Oct 1994 5
Kernel Functions for Drivers Intro(9F)
ddi_io_putw Solaris DDI
ddi_io_rep_getb Solaris DDI
ddi_io_rep_getl Solaris DDI
ddi_io_rep_getw Solaris DDI
ddi_io_rep_putb Solaris DDI
ddi_io_rep_putl Solaris DDI
ddi_io_rep_putw Solaris DDI
ddi_iomin Solaris DDI
ddi_iopb_alloc Solaris DDI
ddi_iopb_free Solaris DDI
ddi_map_regs Solaris DDI
ddi_mapdev Solaris DDI
ddi_mapdev_intercept Solaris DDI
ddi_mapdev_nointercept Solaris DDI
ddi_mapdev_set_device_acc_attr Solaris DDI
ddi_mem_alloc Solaris DDI
ddi_mem_free Solaris DDI
ddi_mem_getb Solaris DDI
ddi_mem_getl Solaris DDI
ddi_mem_getll Solaris DDI
ddi_mem_getw Solaris DDI
ddi_mem_putb Solaris DDI
ddi_mem_putl Solaris DDI
ddi_mem_putll Solaris DDI
ddi_mem_putw Solaris DDI
ddi_mem_rep_getb Solaris DDI
ddi_mem_rep_getl Solaris DDI
ddi_mem_rep_getll Solaris DDI
ddi_mem_rep_getw Solaris DDI
ddi_mem_rep_putb Solaris DDI
ddi_mem_rep_putl Solaris DDI
ddi_mem_rep_putll Solaris DDI
ddi_mem_rep_putw Solaris DDI
ddi_peekc Solaris DDI
ddi_peekd Solaris DDI
ddi_peekl Solaris DDI
ddi_peeks Solaris DDI
ddi_pokec Solaris DDI
ddi_poked Solaris DDI
ddi_pokel Solaris DDI
ddi_pokes Solaris DDI
ddi_prop_create Solaris DDI
ddi_prop_exists Solaris DDI
ddi_prop_free Solaris DDI
ddi_prop_get_int Solaris DDI
ddi_prop_lookup Solaris DDI
ddi_prop_lookup_byte_array Solaris DDI
ddi_prop_lookup_int_array Solaris DDI
ddi_prop_lookup_string Solaris DDI
ddi_prop_lookup_string_array Solaris DDI
ddi_prop_modify Solaris DDI
ddi_prop_op Solaris DDI
SunOS 5.8 Last change: 13 Oct 1994 6
Kernel Functions for Drivers Intro(9F)
ddi_prop_remove Solaris DDI
ddi_prop_remove_all Solaris DDI
ddi_prop_undefine Solaris DDI
ddi_prop_update Solaris DDI
ddi_prop_update_byte_array Solaris DDI
ddi_prop_update_int Solaris DDI
ddi_prop_update_int_array Solaris DDI
ddi_prop_update_string Solaris DDI
ddi_prop_update_string_array Solaris DDI
ddi_ptob Solaris DDI
ddi_putb Solaris DDI
ddi_putl Solaris DDI
ddi_putll Solaris DDI
ddi_putw Solaris DDI
ddi_regs_map_free Solaris DDI
ddi_regs_map_setup Solaris DDI
ddi_remove_intr Solaris DDI
ddi_remove_minor_node Solaris DDI
ddi_remove_softintr Solaris DDI
ddi_rep_getb Solaris DDI
ddi_rep_getl Solaris DDI
ddi_rep_getll Solaris DDI
ddi_rep_getw Solaris DDI
ddi_rep_putb Solaris DDI
ddi_rep_putl Solaris DDI
ddi_rep_putll Solaris DDI
ddi_rep_putw Solaris DDI
ddi_report_dev Solaris DDI
ddi_root_node Solaris DDI
ddi_segmap Solaris DDI
ddi_segmap_setup Solaris DDI
ddi_set_driver_private Solaris DDI
ddi_slaveonly Solaris DDI
ddi_soft_state Solaris DDI
ddi_soft_state_fini Solaris DDI
ddi_soft_state_free Solaris DDI
ddi_soft_state_init Solaris DDI
ddi_soft_state_zalloc Solaris DDI
ddi_trigger_softintr Solaris DDI
ddi_unmap_regs Solaris DDI
delay DDI/DKI
disksort Solaris DDI
drv_getparm DDI/DKI
drv_hztousec DDI/DKI
drv_priv DDI/DKI
drv_usectohz DDI/DKI
drv_usecwait DDI/DKI
free_pktiopb Solaris DDI
freerbuf DDI/DKI
get_pktiopb Solaris DDI
geterror DDI/DKI
getmajor DDI/DKI
SunOS 5.8 Last change: 13 Oct 1994 7
Kernel Functions for Drivers Intro(9F)
getminor DDI/DKI
getrbuf DDI/DKI
hat_getkpfnum DKI only
inb Solaris x86 DDI
inl Solaris x86 DDI
inw Solaris x86 DDI
kmem_alloc DDI/DKI
kmem_free DDI/DKI
kmem_zalloc DDI/DKI
kstat_create Solaris DDI
kstat_delete Solaris DDI
kstat_install Solaris DDI
kstat_named_init Solaris DDI
kstat_queue Solaris DDI
kstat_runq_back_to_waitq Solaris DDI
kstat_runq_enter Solaris DDI
kstat_runq_exit Solaris DDI
kstat_waitq_enter Solaris DDI
kstat_waitq_exit Solaris DDI
kstat_waitq_to_runq Solaris DDI
makecom_g0 Solaris DDI
makecom_g0_s Solaris DDI
makecom_g1 Solaris DDI
makecom_g5 Solaris DDI
makedevice DDI/DKI
max DDI/DKI
min DDI/DKI
minphys Solaris DDI
mod_info Solaris DDI
mod_install Solaris DDI
mod_remove Solaris DDI
mutex_destroy Solaris DDI
mutex_enter Solaris DDI
mutex_exit Solaris DDI
mutex_init Solaris DDI
mutex_owned Solaris DDI
mutex_tryenter Solaris DDI
nochpoll Solaris DDI
nodev DDI/DKI
nulldev DDI/DKI
numtos Solaris DDI
outb Solaris x86 DDI
outl Solaris x86 DDI
outw Solaris x86 DDI
pci_config_getb Solaris DDI
pci_config_getl Solaris DDI
pci_config_getw Solaris DDI
pci_config_putb Solaris DDI
pci_config_putl Solaris DDI
pci_config_putw Solaris DDI
pci_config_setup Solaris DDI
pci_config_teardown Solaris DDI
SunOS 5.8 Last change: 13 Oct 1994 8
Kernel Functions for Drivers Intro(9F)
physio Solaris DDI
pollwakeup DDI/DKI
proc_ref Solaris DDI
proc_signal Solaris DDI
proc_unref Solaris DDI
ptob DDI/DKI
repinsb Solaris x86 DDI
repinsd Solaris x86 DDI
repinsw Solaris x86 DDI
repoutsb Solaris x86 DDI
repoutsd Solaris x86 DDI
repoutsw Solaris x86 DDI
rmalloc DDI/DKI
rmalloc_wait DDI/DKI
rmallocmap DDI/DKI
rmallocmap_wait DDI/DKI
rmfree DDI/DKI
rmfreemap DDI/DKI
rw_destroy Solaris DDI
rw_downgrade Solaris DDI
rw_enter Solaris DDI
rw_exit Solaris DDI
rw_init Solaris DDI
rw_read_locked Solaris DDI
rw_tryenter Solaris DDI
rw_tryupgrade Solaris DDI
scsi_abort Solaris DDI
scsi_alloc_consistent_buf Solaris DDI
scsi_cname Solaris DDI
scsi_destroy_pkt Solaris DDI
scsi_dmafree Solaris DDI
scsi_dmaget Solaris DDI
scsi_dname Solaris DDI
scsi_errmsg Solaris DDI
scsi_free_consistent_buf Solaris DDI
scsi_hba_attach Solaris DDI
scsi_hba_attach_setup Solaris DDI
scsi_hba_detach Solaris DDI
scsi_hba_fini Solaris DDI
scsi_hba_init Solaris DDI
scsi_hba_lookup_capstr Solaris DDI
scsi_hba_pkt_alloc Solaris DDI
scsi_hba_pkt_free Solaris DDI
scsi_hba_probe Solaris DDI
scsi_hba_tran_alloc Solaris DDI
scsi_hba_tran_free Solaris DDI
scsi_ifgetcap Solaris DDI
scsi_ifsetcap Solaris DDI
scsi_init_pkt Solaris DDI
scsi_log Solaris DDI
scsi_mname Solaris DDI
scsi_pktalloc Solaris DDI
SunOS 5.8 Last change: 13 Oct 1994 9
Kernel Functions for Drivers Intro(9F)
scsi_pktfree Solaris DDI
scsi_poll Solaris DDI
scsi_probe Solaris DDI
scsi_resalloc Solaris DDI
scsi_reset Solaris DDI
scsi_reset_notify Solaris DDI
scsi_resfree Solaris DDI
scsi_rname Solaris DDI
scsi_slave Solaris DDI
scsi_sname Solaris DDI
scsi_sync_pkt Solaris DDI
scsi_transport Solaris DDI
scsi_unprobe Solaris DDI
scsi_unslave Solaris DDI
sema_destroy Solaris DDI
sema_init Solaris DDI
sema_p Solaris DDI
sema_p_sig Solaris DDI
sema_tryp Solaris DDI
sema_v Solaris DDI
sprintf Solaris DDI
stoi Solaris DDI
strchr Solaris DDI
strcmp Solaris DDI
strcpy Solaris DDI
strlen Solaris DDI
strncmp Solaris DDI
strncpy Solaris DDI
swab DDI/DKI
timeout DDI/DKI
uiomove DDI/DKI
untimeout DDI/DKI
ureadc DDI/DKI
uwritec DDI/DKI
va_arg Solaris DDI
va_end Solaris DDI
va_start Solaris DDI
vcmn_err DDI/DKI
vsprintf Solaris DDI
LIST OF FUNCTIONS
Name Description
adjmsg(9F) trim bytes from a
message
allocb(9F) allocate a message
block
anocancel(9F) prevent cancellation
of asynchronous I/O
SunOS 5.8 Last change: 13 Oct 1994 10
Kernel Functions for Drivers Intro(9F)
request
aphysio(9F) perform asynchronous
physical I/O
ASSERT(9F) expression verifica-
tion
assert(9F) See ASSERT(9F)
backq(9F) get pointer to the
queue behind the
current queue
bcanput(9F) test for flow control
in specified priority
band
bcanputnext(9F) See canputnext(9F)
bcmp(9F) compare two byte
arrays
bcopy(9F) copy data between
address locations in
the kernel
biodone(9F) release buffer after
buffer I/O transfer
and notify blocked
threads
bioerror(9F) indicate error in
buffer header
bioreset(9F) reuse a private
buffer header after
I/O is complete
biowait(9F) suspend processes
pending completion of
block I/O
bp_mapin(9F) allocate virtual
address space
bp_mapout(9F) deallocate virtual
address space
btop(9F) convert size in bytes
to size in pages
(round down)
SunOS 5.8 Last change: 13 Oct 1994 11
Kernel Functions for Drivers Intro(9F)
btopr(9F) convert size in bytes
to size in pages
(round up)
bufcall(9F) call a function when
a buffer becomes
available
bzero(9F) clear memory for a
given number of bytes
canput(9F) test for room in a
message queue
canputnext(9F) test for room in next
module's message
queue
clrbuf(9F) erase the contents of
a buffer
cmn_err(9F) display an error mes-
sage or panic the
system
condvar(9F) condition variable
routines
copyb(9F) copy a message block
copyin(9F) copy data from a user
program to a driver
buffer
copymsg(9F) copy a message
copyout(9F) copy data from a
driver to a user pro-
gram
cv_broadcast(9F) See condvar(9F)
cv_destroy(9F) See condvar(9F)
cv_init(9F) See condvar(9F)
cv_signal(9F) See condvar(9F)
cv_timedwait(9F) See condvar(9F)
cv_timedwait_sig(9F) See condvar(9F)
SunOS 5.8 Last change: 13 Oct 1994 12
Kernel Functions for Drivers Intro(9F)
cv_wait(9F) See condvar(9F)
cv_wait_sig(9F) See condvar(9F)
datamsg(9F) test whether a mes-
sage is a data mes-
sage
ddi_add_intr(9F) hardware interrupt
handling routines
ddi_add_softintr(9F) software interrupt
handling routines
ddi_btop(9F) page size conversions
ddi_btopr(9F) See ddi_btop(9F)
ddi_copyin(9F) copy data to a driver
buffer
ddi_copyout(9F) copy data from a
driver
ddi_create_minor_node(9F) create a minor node
for this device
ddi_device_copy(9F) copy data from one
device register to
another device regis-
ter
ddi_device_zero(9F) zero fill the device
ddi_dev_is_sid(9F) tell whether a device
is self-identifying
ddi_dev_nintrs(9F) return the number of
interrupt specifica-
tions a device has
ddi_dev_nregs(9F) return the number of
register sets a dev-
ice has
ddi_dev_regsize(9F) return the size of a
device's register
ddi_dma_addr_bind_handle(9F) binds an address to a
DMA handle
ddi_dma_addr_setup(9F) easier DMA setup for
SunOS 5.8 Last change: 13 Oct 1994 13
Kernel Functions for Drivers Intro(9F)
use with virtual
addresses
ddi_dma_alloc_handle(9F) allocate DMA handle
ddi_dma_buf_bind_handle(9F) binds a system buffer
to a DMA handle
ddi_dma_buf_setup(9F) easier DMA setup for
use with buffer
structures
ddi_dma_burstsizes(9F) find out the allowed
burst sizes for a DMA
mapping
ddi_dma_coff(9F) convert a DMA cookie
to an offset within a
DMA handle
ddi_dma_curwin(9F) report current DMA
window offset and
size
ddi_dma_devalign(9F) find DMA mapping
alignment and minimum
transfer size
ddi_dmae(9F) system DMA engine
functions
ddi_dmae_1stparty(9F) See ddi_dmae(9F)
ddi_dmae_alloc(9F) See ddi_dmae(9F)
ddi_dmae_disable(9F) See ddi_dmae(9F)
ddi_dmae_enable(9F) See ddi_dmae(9F)
ddi_dmae_getattr(9F) See ddi_dmae(9F)
ddi_dmae_getcnt(9F) See ddi_dmae(9F)
ddi_dmae_getlim(9F) See ddi_dmae(9F)
ddi_dmae_prog(9F) See ddi_dmae(9F)
ddi_dmae_release(9F) See ddi_dmae(9F)
ddi_dmae_stop(9F) See ddi_dmae(9F)
ddi_dma_free(9F) release system DMA
SunOS 5.8 Last change: 13 Oct 1994 14
Kernel Functions for Drivers Intro(9F)
resources
ddi_dma_free_handle(9F) free DMA handle
ddi_dma_getwin(9F) activate a new DMA
window
ddi_dma_htoc(9F) convert a DMA handle
to a DMA address
cookie
ddi_dma_mem_alloc(9F) allocate memory for
DMA transfer
ddi_dma_mem_free(9F) free previously allo-
cated memory
ddi_dma_movwin(9F) shift current DMA
window
ddi_dma_nextcookie(9F) retrieve subsequent
DMA cookie
ddi_dma_nextseg(9F) get next DMA segment
ddi_dma_nextwin(9F) get next DMA window
ddi_dma_numwin(9F) retrieve number of
DMA windows
ddi_dma_segtocookie(9F) convert a DMA segment
to a DMA address
cookie
ddi_dma_set_sbus64(9F) allow 64 bit
transfers on SBus
ddi_dma_setup(9F) setup DMA resources
ddi_dma_sync(9F) synchronize CPU and
I/O views of memory
ddi_dma_unbind_handle(9F) unbinds the address
in a DMA handle
ddi_enter_critical(9F) enter and exit a
critical region of
control
ddi_exit_critical(9F) See
ddi_enter_critical(9F)
SunOS 5.8 Last change: 13 Oct 1994 15
Kernel Functions for Drivers Intro(9F)
ddi_ffs(9F) find first (last) bit
set in a long integer
ddi_fls(9F) See ddi_ffs(9F)
ddi_getb(9F) read data from the
mapped memory
address, device
register or allocated
DMA memory address
ddi_get_cred(9F) returns a pointer to
the credential struc-
ture of the caller
ddi_get_driver_private(9F) get or set the
address of the
device's private data
area
ddi_get_iblock_cookie(9F) See ddi_add_intr(9F)
ddi_get_instance(9F) get device instance
number
ddi_getl(9F) See ddi_getb(9F)
ddi_getll(9F) See ddi_getb(9F)
ddi_getlongprop(9F) See ddi_prop_op(9F)
ddi_getlongprop_buf(9F) See ddi_prop_op(9F)
ddi_get_name(9F) return the devinfo
node name
ddi_get_parent(9F) find the parent of a
device information
structure
ddi_getprop(9F) See ddi_prop_op(9F)
ddi_getproplen(9F) See ddi_prop_op(9F)
ddi_get_soft_iblock_cookie(9F) See
ddi_add_softintr(9F)
ddi_get_soft_state(9F) See
ddi_soft_state(9F)
ddi_getw(9F) See ddi_getb(9F)
SunOS 5.8 Last change: 13 Oct 1994 16
Kernel Functions for Drivers Intro(9F)
ddi_intr_hilevel(9F) indicate interrupt
handler type
ddi_io_getb(9F) read data from the
mapped device regis-
ter in I/O space
ddi_io_getl(9F) See ddi_io_getb(9F)
ddi_io_getw(9F) See ddi_io_getb(9F)
ddi_iomin(9F) find minimum align-
ment and transfer
size for DMA
ddi_iopb_alloc(9F) allocate and free
non-sequentially
accessed memory
ddi_iopb_free(9F) See
ddi_iopb_alloc(9F)
ddi_io_putb(9F) write data to the
mapped device regis-
ter in I/O space
ddi_io_putl(9F) See ddi_io_putb(9F)
ddi_io_putw(9F) See ddi_io_putb(9F)
ddi_io_rep_getb(9F) read multiple data
from the mapped dev-
ice register in I/O
space
ddi_io_rep_getl(9F) See
ddi_io_rep_getb(9F)
ddi_io_rep_getw(9F) See
ddi_io_rep_getb(9F)
ddi_io_rep_putb(9F) write multiple data
to the mapped device
register in I/O space
ddi_io_rep_putl(9F) See
ddi_io_rep_putb(9F)
ddi_io_rep_putw(9F) See
ddi_io_rep_putb(9F)
ddi_mapdev(9F) create driver-
SunOS 5.8 Last change: 13 Oct 1994 17
Kernel Functions for Drivers Intro(9F)
controlled mapping of
device
ddi_mapdev_intercept(9F) control driver notif-
ication of user
accesses
ddi_mapdev_nointercept(9F) See
ddi_mapdev_intercept(9F)
ddi_mapdev_set_device_acc_attr(9F) Set the device attri-
butes for the mapping
ddi_map_regs(9F) map or unmap regis-
ters
ddi_mem_alloc(9F) allocate and free
sequentially accessed
memory
ddi_mem_free(9F) See ddi_mem_alloc(9F)
ddi_mem_getb(9F) read data from
mapped device in the
memory space or allo-
cated DMA memory
ddi_mem_getl(9F) See ddi_mem_getb(9F)
ddi_mem_getll(9F) See ddi_mem_getb(9F)
ddi_mem_getw(9F) See ddi_mem_getb(9F)
ddi_mem_putb(9F) write data to mapped
device in the memory
space or allocated
DMA memory
ddi_mem_putl(9F) See ddi_mem_putb(9F)
ddi_mem_putll(9F) See ddi_mem_putb(9F)
ddi_mem_putw(9F) See ddi_mem_putb(9F)
ddi_mem_rep_getb(9F) read multiple data
from mapped device in
the memory space or
allocated DMA memory
ddi_mem_rep_getl(9F) See
ddi_mem_rep_getb(9F)
SunOS 5.8 Last change: 13 Oct 1994 18
Kernel Functions for Drivers Intro(9F)
ddi_mem_rep_getll(9F) See
ddi_mem_rep_getb(9F)
ddi_mem_rep_getw(9F) See
ddi_mem_rep_getb(9F)
ddi_mem_rep_putb(9F) write multiple data
to mapped device in
the memory space or
allocated DMA memory
ddi_mem_rep_putl(9F) See
ddi_mem_rep_putb(9F)
ddi_mem_rep_putll(9F) See
ddi_mem_rep_putb(9F)
ddi_mem_rep_putw(9F) See
ddi_mem_rep_putb(9F)
ddi_peek(9F) read a value from a
location
ddi_peekc(9F) See ddi_peek(9F)
ddi_peekd(9F) See ddi_peek(9F)
ddi_peekl(9F) See ddi_peek(9F)
ddi_peeks(9F) See ddi_peek(9F)
ddi_poke(9F) write a value to a
location
ddi_pokec(9F) See ddi_poke(9F)
ddi_poked(9F) See ddi_poke(9F)
ddi_pokel(9F) See ddi_poke(9F)
ddi_pokes(9F) See ddi_poke(9F)
ddi_prop_create(9F) create, remove, or
modify properties for
leaf device drivers
ddi_prop_exists(9F) check for the
existence of a pro-
perty
ddi_prop_free(9F) See
ddi_prop_lookup(9F)
SunOS 5.8 Last change: 13 Oct 1994 19
Kernel Functions for Drivers Intro(9F)
ddi_prop_get_int(9F) lookup integer pro-
perty
ddi_prop_lookup(9F) look up property
information
ddi_prop_lookup_byte_array(9F) See
ddi_prop_lookup(9F)
ddi_prop_lookup_int_array(9F) See
ddi_prop_lookup(9F)
ddi_prop_lookup_string(9F) See
ddi_prop_lookup(9F)
ddi_prop_lookup_string_array(9F) See
ddi_prop_lookup(9F)
ddi_prop_modify(9F) See
ddi_prop_create(9F)
ddi_prop_op(9F) get property informa-
tion for leaf device
drivers
ddi_prop_remove(9F) See
ddi_prop_create(9F)
ddi_prop_remove_all(9F) See
ddi_prop_create(9F)
ddi_prop_undefine(9F) See
ddi_prop_create(9F)
ddi_prop_update(9F) update properties
ddi_prop_update_byte_array(9F) See
ddi_prop_update(9F)
ddi_prop_update_int(9F) See
ddi_prop_update(9F)
ddi_prop_update_int_array(9F) See
ddi_prop_update(9F)
ddi_prop_update_string(9F) See
ddi_prop_update(9F)
ddi_prop_update_string_array(9F) See
ddi_prop_update(9F)
ddi_ptob(9F) See ddi_btop(9F)
SunOS 5.8 Last change: 13 Oct 1994 20
Kernel Functions for Drivers Intro(9F)
ddi_putb(9F) write data to the
mapped memory
address, device
register or allocated
DMA memory address
ddi_putl(9F) See ddi_putb(9F)
ddi_putll(9F) See ddi_putb(9F)
ddi_putw(9F) See ddi_putb(9F)
ddi_regs_map_free(9F) free a previously
mapped register
address space
ddi_regs_map_setup(9F) set up a mapping for
a register address
space
ddi_remove_intr(9F) See ddi_add_intr(9F)
ddi_remove_minor_node(9F) remove a minor node
for this dev_info
ddi_remove_softintr(9F) See
ddi_add_softintr(9F)
ddi_rep_getb(9F) read data from the
mapped memory
address, device
register or allocated
DMA memory address
ddi_rep_getl(9F) See ddi_rep_getb(9F)
ddi_rep_getll(9F) See ddi_rep_getb(9F)
ddi_rep_getw(9F) See ddi_rep_getb(9F)
ddi_report_dev(9F) announce a device
ddi_rep_putb(9F) write data to the
mapped memory
address, device
register or allocated
DMA memory address
ddi_rep_putl(9F) See ddi_rep_putb(9F)
ddi_rep_putll(9F) See ddi_rep_putb(9F)
SunOS 5.8 Last change: 13 Oct 1994 21
Kernel Functions for Drivers Intro(9F)
ddi_rep_putw(9F) See ddi_rep_putb(9F)
ddi_root_node(9F) get the root of the
dev_info tree
ddi_segmap(9F) Set up a user mapping
using seg_dev
ddi_segmap_setup(9F) See ddi_segmap(9F)
ddi_set_driver_private(9F) See
ddi_get_driver_private(9F)
ddi_slaveonly(9F) tell if a device is
installed in a slave
access only location
ddi_soft_state(9F) driver soft state
utility routines
ddi_soft_state_fini(9F) See
ddi_soft_state(9F)
ddi_soft_state_free(9F) See
ddi_soft_state(9F)
ddi_soft_state_init(9F) See
ddi_soft_state(9F)
ddi_soft_state_zalloc(9F) See
ddi_soft_state(9F)
ddi_trigger_softintr(9F) See
ddi_add_softintr(9F)
ddi_unmap_regs(9F) See ddi_map_regs(9F)
delay(9F) delay execution for a
specified number of
clock ticks
disksort(9F) single direction
elevator seek sort
for buffers
drv_getparm(9F) retrieve kernel state
information
drv_hztousec(9F) convert clock ticks
to microseconds
drv_priv(9F) determine driver
SunOS 5.8 Last change: 13 Oct 1994 22
Kernel Functions for Drivers Intro(9F)
privilege
drv_usectohz(9F) convert microseconds
to clock ticks
drv_usecwait(9F) busy-wait for speci-
fied interval
dupb(9F) duplicate a message
block descriptor
dupmsg(9F) duplicate a message
enableok(9F) reschedule a queue
for service
esballoc(9F) allocate a message
block using a
caller-supplied
buffer
esbbcall(9F) call function when
buffer is available
flushband(9F) flush messages for a
specified priority
band
flushq(9F) remove messages from
a queue
freeb(9F) free a message block
freemsg(9F) free all message
blocks in a message
free_pktiopb(9F) See get_pktiopb(9F)
freerbuf(9F) free a raw buffer
header
freezestr(9F) freeze, thaw the
state of a stream
geterror(9F) return I/O error
getmajor(9F) get major device
number
getminor(9F) get minor device
number
SunOS 5.8 Last change: 13 Oct 1994 23
Kernel Functions for Drivers Intro(9F)
get_pktiopb(9F) allocate/free a SCSI
packet in the iopb
map
getq(9F) get the next message
from a queue
getrbuf(9F) get a raw buffer
header
hat_getkpfnum(9F) get page frame number
for kernel address
inb(9F) read from an I/O port
inl(9F) See inb(9F)
insq(9F) insert a message into
a queue
inw(9F) See inb(9F)
kmem_alloc(9F) allocate kernel
memory
kmem_free(9F) See kmem_alloc(9F)
kmem_zalloc(9F) See kmem_alloc(9F)
kstat_create(9F) create and initialize
a new kstat
kstat_delete(9F) remove a kstat from
the system
kstat_install(9F) add a fully initial-
ized kstat to the
system
kstat_named_init(9F) initialize a named
kstat
kstat_queue(9F) update I/O kstat
statistics
kstat_runq_back_to_waitq(9F) See kstat_queue(9F)
kstat_runq_enter(9F) See kstat_queue(9F)
kstat_runq_exit(9F) See kstat_queue(9F)
kstat_waitq_enter(9F) See kstat_queue(9F)
SunOS 5.8 Last change: 13 Oct 1994 24
Kernel Functions for Drivers Intro(9F)
kstat_waitq_exit(9F) See kstat_queue(9F)
kstat_waitq_to_runq(9F) See kstat_queue(9F)
linkb(9F) concatenate two mes-
sage blocks
makecom(9F) make a packet for
SCSI commands
makecom_g0(9F) See makecom(9F)
makecom_g0_s(9F) See makecom(9F)
makecom_g1(9F) See makecom(9F)
makecom_g5(9F) See makecom(9F)
makedevice(9F) make device number
from major and minor
numbers
max(9F) return the larger of
two integers
min(9F) return the lesser of
two integers
minphys(9F) See physio(9F)
mod_info(9F) See mod_install(9F)
mod_install(9F) add, remove or query
a loadable module
mod_remove(9F) See mod_install(9F)
msgdsize(9F) return the number of
bytes in a message
msgpullup(9F) concatenate bytes in
a message
mt-streams(9F) STREAMS multithread-
ing
mutex(9F) mutual exclusion lock
routines
mutex_destroy(9F) See mutex(9F)
mutex_enter(9F) See mutex(9F)
SunOS 5.8 Last change: 13 Oct 1994 25
Kernel Functions for Drivers Intro(9F)
mutex_exit(9F) See mutex(9F)
mutex_init(9F) See mutex(9F)
mutex_owned(9F) See mutex(9F)
mutex_tryenter(9F) See mutex(9F)
nochpoll(9F) error return function
for non-pollable dev-
ices
nodev(9F) error return function
noenable(9F) prevent a queue from
being scheduled
nulldev(9F) zero return function
numtos(9F) See stoi(9F)
OTHERQ(9F) get pointer to
queue's partner queue
otherq(9F) See OTHERQ(9F)
outb(9F) write to an I/O port
outl(9F) See outb(9F)
outw(9F) See outb(9F)
pci_config_getb(9F) read or write single
datum of various
sizes to the PCI
Local Bus Configura-
tion space
pci_config_getl(9F) See
pci_config_getb(9F)
pci_config_getll(9F) See
pci_config_getb(9F)
pci_config_getw(9F) See
pci_config_getb(9F)
pci_config_putb(9F) See
pci_config_getb(9F)
pci_config_putl(9F) See
pci_config_getb(9F)
SunOS 5.8 Last change: 13 Oct 1994 26
Kernel Functions for Drivers Intro(9F)
pci_config_putll(9F) See
pci_config_getb(9F)
pci_config_putw(9F) See
pci_config_getb(9F)
pci_config_setup(9F) setup or tear down
the resources for
enabling accesses to
the PCI Local Bus
Configuration space
pci_config_teardown(9F) See
pci_config_setup(9F)
physio(9F) perform physical I/O
pollwakeup(9F) inform a process that
an event has occurred
proc_ref(9F) See proc_signal(9F)
proc_signal(9F) send a signal to a
process
proc_unref(9F) See proc_signal(9F)
ptob(9F) convert size in pages
to size in bytes
pullupmsg(9F) concatenate bytes in
a message
put(9F) call a STREAMS put
procedure
putbq(9F) place a message at
the head of a queue
putctl(9F) send a control mes-
sage to a queue
putctl1(9F) send a control mes-
sage with a one-byte
parameter to a queue
putnext(9F) send a message to the
next queue
putnextctl(9F) send a control mes-
sage to a queue
SunOS 5.8 Last change: 13 Oct 1994 27
Kernel Functions for Drivers Intro(9F)
putnextctl1(9F) send a control mes-
sage with a one-byte
parameter to a queue
putq(9F) put a message on a
queue
qbufcall(9F) call a function when
a buffer becomes
available
qenable(9F) enable a queue
qprocsoff(9F) See qprocson(9F)
qprocson(9F) enable, disable put
and service routines
qreply(9F) send a message on a
stream in the reverse
direction
qsize(9F) find the number of
messages on a queue
qtimeout(9F) execute a function
after a specified
length of time
qunbufcall(9F) cancel a pending
qbufcall request
quntimeout(9F) cancel previous
qtimeout function
call
qwait(9F) STREAMS wait routines
qwait_sig(9F) See qwait(9F)
qwriter(9F) asynchronous STREAMS
perimeter upgrade
RD(9F) get pointer to the
read queue
rd(9F) See RD(9F)
repinsb(9F) See inb(9F)
repinsd(9F) See inb(9F)
SunOS 5.8 Last change: 13 Oct 1994 28
Kernel Functions for Drivers Intro(9F)
repinsw(9F) See inb(9F)
repoutsb(9F) See outb(9F)
repoutsd(9F) See outb(9F)
repoutsw(9F) See outb(9F)
rmalloc(9F) allocate space from a
resource map
rmallocmap(9F) allocate and free
resource maps
rmallocmap_wait(9F) See rmallocmap(9F)
rmalloc_wait(9F) allocate space from a
resource map, wait if
necessary
rmfree(9F) free space back into
a resource map
rmfreemap(9F) See rmallocmap(9F)
rmvb(9F) remove a message
block from a message
rmvq(9F) remove a message from
a queue
rw_destroy(9F) See rwlock(9F)
rw_downgrade(9F) See rwlock(9F)
rw_enter(9F) See rwlock(9F)
rw_exit(9F) See rwlock(9F)
rw_init(9F) See rwlock(9F)
rwlock(9F) readers/writer lock
functions
rw_read_locked(9F) See rwlock(9F)
rw_tryenter(9F) See rwlock(9F)
rw_tryupgrade(9F) See rwlock(9F)
samestr(9F) See SAMESTR(9F)
SunOS 5.8 Last change: 13 Oct 1994 29
Kernel Functions for Drivers Intro(9F)
SAMESTR(9F) test if next queue is
in the same stream
scsi_abort(9F) abort a SCSI command
scsi_alloc_consistent_buf(9F) allocate an I/O
buffer for SCSI DMA
scsi_cname(9F) decode a SCSI name
scsi_destroy_pkt(9F) free an allocated
SCSI packet and its
DMA resource
scsi_dmafree(9F) See scsi_dmaget(9F)
scsi_dmaget(9F) SCSI dma utility rou-
tines
scsi_dname(9F) See scsi_cname(9F)
scsi_errmsg(9F) display a SCSI
request sense message
scsi_free_consistent_buf(9F) free a previously
allocated SCSI DMA
I/O buffer
scsi_hba_attach_setup(9F) SCSI HBA attach and
detach routines
scsi_hba_attach(9F) See
scsi_hba_attach_setup(9F)
scsi_hba_detach(9F) See
scsi_hba_attach(9F)
scsi_hba_fini(9F) See scsi_hba_init(9F)
scsi_hba_init(9F) SCSI Host Bus Adapter
system initialization
and completion rou-
tines
scsi_hba_lookup_capstr(9F) return index matching
capability string
scsi_hba_pkt_alloc(9F) allocate and free a
scsi_pkt structure
scsi_hba_pkt_free(9F) See
scsi_hba_pkt_alloc(9F)
SunOS 5.8 Last change: 13 Oct 1994 30
Kernel Functions for Drivers Intro(9F)
scsi_hba_probe(9F) default SCSI HBA
probe function
scsi_hba_tran_alloc(9F) allocate and free
transport structures
scsi_hba_tran_free(9F) See
scsi_hba_tran_alloc(9F)
scsi_ifgetcap(9F) get/set SCSI tran-
sport capability
scsi_ifsetcap(9F) See scsi_ifgetcap(9F)
scsi_init_pkt(9F) prepare a complete
SCSI packet
scsi_log(9F) display a SCSI-
device-related mes-
sage
scsi_mname(9F) See scsi_cname(9F)
scsi_pktalloc(9F) SCSI packet utility
routines
scsi_pktfree(9F) See scsi_pktalloc(9F)
scsi_poll(9F) run a polled SCSI
command on behalf of
a target driver
scsi_probe(9F) utility for probing a
scsi device
scsi_resalloc(9F) See scsi_pktalloc(9F)
scsi_reset(9F) reset a SCSI bus or
target
scsi_reset_notify(9F) notify target driver
of bus resets
scsi_resfree(9F) See scsi_pktalloc(9F)
scsi_rname(9F) See scsi_cname(9F)
scsi_slave(9F) utility for SCSI tar-
get drivers to estab-
lish the presence of
a target
SunOS 5.8 Last change: 13 Oct 1994 31
Kernel Functions for Drivers Intro(9F)
scsi_sname(9F) See scsi_cname(9F)
scsi_sync_pkt(9F) synchronize CPU and
I/O views of memory
scsi_transport(9F) request by a SCSI
target driver to
start a command
scsi_unprobe(9F) free resources allo-
cated during initial
probing
scsi_unslave(9F) See scsi_unprobe(9F)
sema_destroy(9F) See semaphore(9F)
sema_init(9F) See semaphore(9F)
sema_p(9F) See semaphore(9F)
semaphore(9F) semaphore functions
sema_p_sig(9F) See semaphore(9F)
sema_tryp(9F) See semaphore(9F)
sema_v(9F) See semaphore(9F)
sprintf(9F) format characters in
memory
stoi(9F) convert between an
integer and a decimal
string
strchr(9F) find a character in a
string
strcmp(9F) compare two null ter-
minated strings.
strcpy(9F) copy a string from
one location to
another.
strlen(9F) determine the number
of non-null bytes in
a string
strlog(9F) submit messages to
the log driver
SunOS 5.8 Last change: 13 Oct 1994 32
Kernel Functions for Drivers Intro(9F)
strncmp(9F) See strcmp(9F)
strncpy(9F) See strcpy(9F)
strqget(9F) get information about
a queue or band of
the queue
strqset(9F) change information
about a queue or band
of the queue
swab(9F) swap bytes in 16-bit
halfwords
testb(9F) check for an avail-
able buffer
timeout(9F) execute a function
after a specified
length of time
uiomove(9F) copy kernel data
using uio structure
unbufcall(9F) cancel a pending buf-
call request
unfreezestr(9F) See freezestr(9F)
unlinkb(9F) remove a message
block from the head
of a message
untimeout(9F) cancel previous
timeout function call
ureadc(9F) add character to a
uio structure
uwritec(9F) remove a character
from a uio structure
va_arg(9F) handle variable argu-
ment list
va_end(9F) See va_arg(9F)
va_start(9F) See va_arg(9F)
vcmn_err(9F) See cmn_err(9F)
SunOS 5.8 Last change: 13 Oct 1994 33
Kernel Functions for Drivers Intro(9F)
vsprintf(9F) format characters in
memory
WR(9F) get pointer to the
write queue for this
module or driver
wr(9F) See WR(9F)
SunOS 5.8 Last change: 13 Oct 1994 34
© 1994 Man-cgi 1.15S, Panagiotis Christias <christia@theseas.ntua.gr>
1995 Modified for Solaris 2.3, David Adams, <d.j.adams@soton.ac.uk>