<?Pub UDT _bookmark _target?><?Pub EntList amp nbsp gt lt ndash hyphen?><?Pub CX solbook(book(title()bookinfo()part(3)part(title()partintro()appendix()?><appendix id="ddidkisvc-29227"><title>Summary of Solaris DDI/DKI
Services</title><indexterm><primary>DDI function tables</primary>
</indexterm><highlights><para>This appendix discusses the interfaces provided by the Solaris DDI/DKI.
These descriptions should not be considered complete or definitive, nor do
they provide a thorough guide to usage. The descriptions are intended to describe
what the functions do in general terms. See <olink targetdoc="group-refman" targetptr="physio-9f" remap="external"><citerefentry><refentrytitle>physio</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink> for more detailed information.
The categories are:</para><itemizedlist mark="bullet"><listitem><para><olink targetptr="ddidkisvc-8" remap="internal">Module Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-9" remap="internal">Device Information Tree Node
(dev_info_t) Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-12" remap="internal">Device (dev_t) Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-14" remap="internal">Property Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-17" remap="internal">Device Software State Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-19" remap="internal">Memory Allocation and Deallocation
Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-26" remap="internal">Kernel Thread Control and
Synchronization Functions</olink></para>
</listitem><listitem><para><olink targetptr="geywh" remap="internal">Task Queue Management Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-30" remap="internal">Interrupt Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-32" remap="internal">Programmed I/O Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-36" remap="internal">Direct Memory Access (DMA)
Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-39" remap="internal">User Space Access Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-42" remap="internal">User Process Event Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-44" remap="internal">User Process Information Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-47" remap="internal">User Application Kernel and
Device Access Functions</olink></para>
</listitem><listitem><para><olink targetptr="fcaon" remap="internal">Time-Related Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-53" remap="internal">Power Management Functions</olink></para>
</listitem><listitem><para><olink targetptr="geyxr" remap="internal">Fault Management Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-55" remap="internal">Kernel Statistics Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-57" remap="internal">Kernel Logging and Printing
Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-59" remap="internal">Buffered I/O Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-61" remap="internal">Virtual Memory Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-64" remap="internal">Device ID Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-66" remap="internal">SCSI Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-69" remap="internal">Resource Map Management Functions</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-71" remap="internal">System Global State</olink></para>
</listitem><listitem><para><olink targetptr="ddidkisvc-73" remap="internal">Utility Functions</olink></para>
</listitem>
</itemizedlist><para>This appendix does not discuss STREAMS interfaces; to learn more about
network drivers, see the <olink targetdoc="streams" remap="external"><citetitle remap="book">STREAMS Programming Guide</citetitle></olink>.</para>
</highlights><sect1 id="ddidkisvc-8"><title>Module Functions</title><indexterm><primary>module functions</primary>
</indexterm><indexterm><primary>loadable module functions</primary>
</indexterm><indexterm><primary>functions</primary><see>individual functions</see>
</indexterm><para>The module functions are:</para><variablelist><varlistentry><term><command>mod_info</command></term><listitem><para>Query a loadable module</para>
</listitem>
</varlistentry><varlistentry><term><command>mod_install</command></term><listitem><para>Add a loadable module</para>
</listitem>
</varlistentry><varlistentry><term><command>mod_remove</command></term><listitem><para>Remove a loadable module</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-9"><title>Device Information Tree Node (<literal>dev_info_t</literal>)
Functions</title><indexterm><primary><literal>dev_info_t</literal> functions</primary>
</indexterm><para>The device information tree node functions are:</para><variablelist><varlistentry><term><function>ddi_binding_name</function></term><listitem><para>Return driver binding name</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dev_is_sid</function></term><listitem><para>Tell whether a device is self-identifying</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_driver_major</function></term><listitem><para>Return driver major device number</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_driver_name</function></term><listitem><para>Return normalized driver name</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_node_name</function></term><listitem><para>Return the <literal>devinfo</literal> node name</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get_devstate</function></term><listitem><para>Check device state</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get_instance</function></term><listitem><para>Get device instance number</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get_name</function></term><listitem><para>Return driver binding name</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get_parent</function></term><listitem><para>Find the parent of a device information structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_root_node</function></term><listitem><para>Get the root of the <literal>dev_info</literal> tree</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-12"><title>Device (<literal>dev_t</literal>) Functions</title><indexterm><primary><literal>dev_t</literal> functions</primary>
</indexterm><para>The device functions are:</para><variablelist><varlistentry><term><function>ddi_create_minor_node</function></term><listitem><para>Create a minor node for a device</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_getiminor</function></term><listitem><para>Get kernel internal minor number from an external <literal>dev_t</literal></para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_remove_minor_node</function></term><listitem><para>Remove a minor mode for a device</para>
</listitem>
</varlistentry><varlistentry><term><function>getmajor</function></term><listitem><para>Get major device number</para>
</listitem>
</varlistentry><varlistentry><term><function>getminor</function></term><listitem><para>Get minor device number</para>
</listitem>
</varlistentry><varlistentry><term><function>makedevice</function></term><listitem><para>Make device number from major and minor numbers</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-14"><title>Property Functions</title><indexterm><primary>property functions</primary>
</indexterm><para>The property functions are:</para><variablelist><varlistentry><term><function>ddi_prop_exists</function></term><listitem><para>Check for the existence of a property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_free</function></term><listitem><para>Free resources consumed by property lookup</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_get_int</function></term><listitem><para>Look up integer property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_get_int64</function></term><listitem><para>Look up 64-bit integer property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_lookup_byte_array</function></term><listitem><para>Look up byte array property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_lookup_int_array</function></term><listitem><para>Look up integer array property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_lookup_int64_array</function></term><listitem><para>Look up 64-bit integer array property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_lookup_string</function></term><listitem><para>Look up string property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_lookup_string_array</function></term><listitem><para>Look up string array property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_remove</function></term><listitem><para>Remove a property of a device</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_remove_all</function></term><listitem><para>Remove all properties of a device</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_undefine</function></term><listitem><para>Hide a property of a device</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_update_byte_array</function></term><listitem><para>Create or update byte array property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_update_int</function></term><listitem><para>Create or update integer property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_update_int64</function></term><listitem><para>Create or update 64-bit integer property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_update_int_array</function></term><listitem><para>Create or update integer array property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_update_int64_array</function></term><listitem><para>Create or update 64-bit integer array property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_update_string</function></term><listitem><para>Create or update string property</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_prop_update_string_array</function></term><listitem><para>Create or update string array property</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcaiq"><title>Deprecated Property Functions</title><indexterm><primary>deprecated property functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec6" colwidth="44.44*"/><colspec colname="colspec7" colwidth="55.56*"/><thead><row rowsep="1"><entry><para>Deprecated Functions</para>
</entry><entry><para>Replacements</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>ddi_getlongprop</function></para>
</entry><entry><para>see <function>ddi_prop_lookup</function></para>
</entry>
</row><row><entry><para><function>ddi_getlongprop_buf</function></para>
</entry><entry><para><function>ddi_prop_lookup</function></para>
</entry>
</row><row><entry><para><function>ddi_getprop</function></para>
</entry><entry><para><function>ddi_prop_get_int</function></para>
</entry>
</row><row><entry><para><function>ddi_getproplen</function></para>
</entry><entry><para><function>ddi_prop_lookup</function></para>
</entry>
</row><row><entry><para><function>ddi_prop_create</function></para>
</entry><entry><para><function>ddi_prop_lookup</function></para>
</entry>
</row><row><entry><para><function>ddi_prop_modify</function></para>
</entry><entry><para> <function>ddi_prop_lookup</function></para>
</entry>
</row><row><entry><para><function>ddi_prop_op</function></para>
</entry><entry><para><function>ddi_prop_lookup</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-17"><title>Device Software State Functions</title><indexterm><primary>software state functions</primary>
</indexterm><para>The device software state functions are:</para><variablelist><varlistentry><term><function>ddi_get_driver_private</function></term><listitem><para>Get the address of the device's private data area</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get_soft_state</function></term><listitem><para>Get pointer to instance soft-state structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_set_driver_private</function></term><listitem><para>Set the address of the device's private data area</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_soft_state_fini</function></term><listitem><para>Destroy driver soft-state structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_soft_state_free</function></term><listitem><para>Free instance soft-state structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_soft_state_init</function></term><listitem><para>Initialize driver soft-state structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_soft_state_zalloc</function></term><listitem><para>Allocate instance soft-state structure</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-19"><title>Memory Allocation and Deallocation Functions</title><indexterm><primary>memory allocation functions</primary>
</indexterm><para>The memory allocation and deallocation functions are:</para><variablelist><varlistentry><term><function>kmem_alloc</function></term><listitem><para>Allocate kernel memory</para>
</listitem>
</varlistentry><varlistentry><term><function>kmem_free</function></term><listitem><para>Free kernel memory</para>
</listitem>
</varlistentry><varlistentry><term><function>kmem_zalloc</function></term><listitem><para>Allocate zero-filled kernel memory</para>
</listitem>
</varlistentry>
</variablelist><para><indexterm><primary>memory allocation functions</primary></indexterm>The
following functions allocate and free memory intended to be used for DMA.
See <olink targetptr="ddidkisvc-36" remap="internal">Direct Memory Access (DMA) Functions</olink>.</para><variablelist><varlistentry><term><function>ddi_dma_mem_alloc</function></term><listitem><para>Allocate memory for DMA transfer</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_mem_free</function></term><listitem><para>Free previously allocated DMA memory</para>
</listitem>
</varlistentry>
</variablelist><para>The following functions allocate and free memory intended to be exported
to user space. See <olink targetptr="ddidkisvc-39" remap="internal">User Space Access Functions</olink>.</para><variablelist><varlistentry><term><function>ddi_umem_alloc</function></term><listitem><para>Allocate page-aligned kernel memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_umem_free</function></term><listitem><para>Free page-aligned kernel memory</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcaie"><title>Deprecated Memory Allocation and Deallocation
Functions</title><indexterm><primary>deprecated memory allocation functions</primary>
</indexterm><indexterm><primary>memory allocation functions</primary><secondary>deprecated</secondary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.44*"/><colspec colwidth="55.56*"/><thead><row rowsep="1"><entry><para>Deprecated Function</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>ddi_iopb_alloc</function></para>
</entry><entry><para><function>ddi_dma_mem_alloc</function></para>
</entry>
</row><row><entry><para><function>ddi_iopb_free</function></para>
</entry><entry><para><function>ddi_dma_mem_free</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_alloc</function></para>
</entry><entry><para><function>ddi_dma_mem_alloc</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_free</function></para>
</entry><entry><para><function>ddi_dma_mem_free</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-26"><title>Kernel Thread Control and Synchronization
Functions</title><indexterm><primary>condition variable functions</primary>
</indexterm><indexterm><primary>kernel thread functions</primary>
</indexterm><indexterm><primary>locks</primary><secondary>manipulating</secondary>
</indexterm><para>The kernel thread control and synchronization functions are:</para><variablelist><varlistentry><term><function>cv_broadcast</function></term><listitem><para>Wake up all waiting threads</para>
</listitem>
</varlistentry><varlistentry><term><function>cv_destroy</function></term><listitem><para>Free an allocated condition variable</para>
</listitem>
</varlistentry><varlistentry><term><function>cv_init</function></term><listitem><para>Allocate a condition variable</para>
</listitem>
</varlistentry><varlistentry><term><function>cv_signal</function></term><listitem><para>Wake up one waiting thread</para>
</listitem>
</varlistentry><varlistentry><term><function>cv_timedwait</function></term><listitem><para>Await an event with timeout</para>
</listitem>
</varlistentry><varlistentry><term><function>cv_timedwait_sig</function></term><listitem><para>Await an event or signal with timeout</para>
</listitem>
</varlistentry><varlistentry><term><function>cv_wait</function></term><listitem><para>Await an event</para>
</listitem>
</varlistentry><varlistentry><term><function>cv_wait_sig</function></term><listitem><para>Await an event or signal</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_can_receive_sig</function></term><listitem><para>Determine whether the current thread can receive a signal</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_enter_critical</function></term><listitem><para>Enter a critical region of control</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_exit_critical</function></term><listitem><para>Exit a critical region of control</para>
</listitem>
</varlistentry><varlistentry><term><function>mutex_destroy</function></term><listitem><para><indexterm><primary>mutex</primary><secondary>locks</secondary><tertiary>manipulating</tertiary></indexterm>Destroy mutual exclusion lock</para>
</listitem>
</varlistentry><varlistentry><term><function>mutex_enter</function></term><listitem><para>Acquire mutual exclusion lock</para>
</listitem>
</varlistentry><varlistentry><term><function>mutex_exit</function></term><listitem><para>Release mutual exclusion lock</para>
</listitem>
</varlistentry><varlistentry><term><function>mutex_init</function></term><listitem><para>Initialize mutual exclusion lock</para>
</listitem>
</varlistentry><varlistentry><term><function>mutex_owned</function></term><listitem><para>Determine whether current thread is holding mutual exclusion
lock</para>
</listitem>
</varlistentry><varlistentry><term><function>mutex_tryenter</function></term><listitem><para>Attempt to acquire mutual exclusion lock without waiting</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_destroy</function></term><listitem><para><indexterm><primary>readers/writer locks</primary><secondary>manipulating</secondary></indexterm>Destroy a readers/writer lock</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_downgrade</function></term><listitem><para>Downgrade a readers/writer lock holding from writer to reader</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_enter</function></term><listitem><para>Acquire a readers/writer lock</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_exit</function></term><listitem><para>Release a readers/writer lock</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_init</function></term><listitem><para>Initialize a readers/writer lock</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_read_locked</function></term><listitem><para>Determine whether readers/writer lock is held for read or
write</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_tryenter</function></term><listitem><para>Attempt to acquire a readers/writer lock without waiting</para>
</listitem>
</varlistentry><varlistentry><term><function>rw_tryupgrade</function></term><listitem><para>Attempt to upgrade readers/writer lock holding from reader
to writer</para>
</listitem>
</varlistentry><varlistentry><term><function>sema_destroy</function></term><listitem><para>Destroy a semaphore</para>
</listitem>
</varlistentry><varlistentry><term><function>sema_init</function></term><listitem><para>Initialize a semaphore</para>
</listitem>
</varlistentry><varlistentry><term><function>sema_p</function></term><listitem><para>Decrement semaphore and possibly block</para>
</listitem>
</varlistentry><varlistentry><term><function>sema_p_sig</function></term><listitem><para>Decrement semaphore but do not block if signal is pending</para>
</listitem>
</varlistentry><varlistentry><term><function>sema_tryp</function></term><listitem><para>Attempt to decrement semaphore but do not block</para>
</listitem>
</varlistentry><varlistentry><term><function>sema_v</function></term><listitem><para>Increment semaphore and possibly unblock waiter</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="geywh"><title>Task Queue Management Functions</title><indexterm><primary>task queues</primary><secondary>interfaces</secondary>
</indexterm><para>The task queue management functions are listed below. See the <olink targetdoc="group-refman" targetptr="taskq-9f" remap="external"><citerefentry><refentrytitle>taskq</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink> man page for more information
about these interfaces.</para><variablelist><varlistentry><term><function>ddi_taskq_create</function></term><listitem><para>Create a task queue</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_taskq_destroy</function></term><listitem><para>Destroy a task queue</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_taskq_dispatch</function></term><listitem><para>Add a task to a task queue</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_taskq_wait</function></term><listitem><para>Wait for pending tasks to complete</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_taskq_suspend</function></term><listitem><para>Suspend a task queue</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_taskq_suspended</function></term><listitem><para>Check whether a task queue is suspended</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_taskq_resume</function></term><listitem><para>Resume a suspended task queue</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-30"><title>Interrupt Functions</title><indexterm><primary>interrupt functions</primary>
</indexterm><para>The interrupt functions are:</para><variablelist><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-add-handler-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_add_handler</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Adds an interrupt handler.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-add-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_add_softint</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Adds a soft interrupt handler.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-alloc-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_alloc</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Allocates system resources and interrupt vectors for the specified
type of interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-block-disable-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_block_disable</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Disables the specified range of interrupts. For MSI only.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-block-enable-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_block_enable</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Enables the specified range of interrupts. For MSI only.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-clr-mask-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_clr_mask</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Clears an interrupt mask if the specified
interrupt is enabled.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-disable-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_disable</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Disables the specified interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-dup-handler-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_dup_handler</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Use with MSI-X only. Copies an address and data pair for an
allocated interrupt vector to an unused interrupt vector on the same device.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-enable-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_enable</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Enables the specified interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-free-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_free</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Releases the system resources and interrupt vectors for a
specified interrupt handle.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-cap-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_cap</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Returns interrupt capability flags for the specified interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-hilevel-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_hilevel_pri</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Returns the minimum priority level for a high-level interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-navail-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_navail</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Returns the number of interrupts available for a particular
hardware device and given interrupt type.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-nintrs-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_nintrs</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Get the number of interrupts that the device supports for
the given interrupt type.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-pending-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_pending</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Read the interrupt pending bit if one is supported by either
the host bridge or the device.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_pri</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Returns the current software priority setting for the specified
interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-softint-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_softint_pri</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Returns the soft interrupt priority for the specified interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-get-supported-types-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_supported_types</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Returns the hardware interrupt types that are supported by
both the device and the host.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-remove-handler-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_remove_handler</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Removes the specified interrupt handler.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-remove-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_remove_softint</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Remove the specified soft interrupt handler.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-set-cap-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_set_cap</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Sets the DDI_INTR_FLAG_LEVEL or  DDI_INTR_FLAG_EDGE flag for
the specified interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-set-mask-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_set_mask</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Sets an interrupt
mask if the specified interrupt is enabled.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-set-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_set_pri</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Sets the interrupt priority level for the specified interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-set-softint-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_set_softint_pri</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Changes the relative soft interrupt priority for the specified
soft interrupt.</para>
</listitem>
</varlistentry><varlistentry><term><olink targetdoc="group-refman" targetptr="ddi-intr-trigger-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_trigger_softint</refentrytitle><manvolnum>9F</manvolnum>
</citerefentry></olink></term><listitem><para>Trigger the specified soft interrupt.</para>
</listitem>
</varlistentry>
</variablelist><para>To take advantage of the features of the new framework, use the above
interfaces. Do not use the deprecated interfaces that are listed in the following
table. These deprecated interfaces are retained for compatibility purposes
only.</para><table frame="topbot" id="fwbly"><title>Deprecated Interrupt Functions</title><indexterm><primary>deprecated interrupt functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec6" colwidth="44.44*"/><colspec colname="colspec7" colwidth="55.56*"/><thead><row rowsep="1"><entry><para>Deprecated Interrupt Functions</para>
</entry><entry><para>Replacements</para>
</entry>
</row>
</thead><tbody><row><entry><para><citerefentry><refentrytitle>ddi_add_intr</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para>Three-step process:</para><orderedlist><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-alloc-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_alloc</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-add-handler-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_add_handler</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-enable-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_enable</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem>
</orderedlist>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_add_softintr</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para><olink targetdoc="group-refman" targetptr="ddi-intr-add-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_add_softint</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_dev_nintrs</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para><olink targetdoc="group-refman" targetptr="ddi-intr-get-nintrs-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_nintrs</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_get_iblock_cookie</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para>Three-step process:</para><orderedlist><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-alloc-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_alloc</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-get-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_pri</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-free-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_free</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem>
</orderedlist>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_get_soft_iblock_cookie</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para>Three-step process:</para><orderedlist><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-add-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_add_softint</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-get-softint-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_softint_pri</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-remove-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_remove_softint</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem>
</orderedlist>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_intr_hilevel</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para>Three-step process:</para><orderedlist><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-alloc-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_alloc</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-get-hilevel-pri-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_get_hilevel_pri</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-free-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_free</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem>
</orderedlist>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_remove_intr</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para>Three-step process:</para><orderedlist><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-disable-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_disable</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-remove-handler-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_remove_handler</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="group-refman" targetptr="ddi-intr-free-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_free</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</listitem>
</orderedlist>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_remove_softintr</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para><olink targetdoc="group-refman" targetptr="ddi-intr-remove-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_remove_softint</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</entry>
</row><row><entry><para><citerefentry><refentrytitle>ddi_trigger_softintr</refentrytitle><manvolnum>9F</manvolnum></citerefentry></para>
</entry><entry><para><olink targetdoc="group-refman" targetptr="ddi-intr-trigger-softint-9f" remap="external"><citerefentry><refentrytitle>ddi_intr_trigger_softint</refentrytitle><manvolnum>9F</manvolnum></citerefentry></olink></para>
</entry>
</row>
</tbody>
</tgroup>
</table><?Pub _bookmark Command="[Quick Mark]"?>
</sect1><sect1 id="ddidkisvc-32"><title>Programmed I/O Functions</title><indexterm><primary>programmed I/O functions</primary>
</indexterm><para>The programmed I/O functions are:</para><variablelist><varlistentry><term><function>ddi_dev_nregs</function></term><listitem><para>Return the number of register sets a device has</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dev_regsize</function></term><listitem><para>Return the size of a device's register</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_regs_map_setup</function></term><listitem><para>Set up a mapping for a register address space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_regs_map_free</function></term><listitem><para>Free a previously mapped register address space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_device_copy</function></term><listitem><para>Copy data from one device register to another device register</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_device_zero</function></term><listitem><para>Zero fill the device</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_check_acc_handle</function></term><listitem><para>Check data access handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get8</function></term><listitem><para>Read 8-bit data from mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get16</function></term><listitem><para>Read 16-bit data from mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get32</function></term><listitem><para>Read 32-bit data from mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get64</function></term><listitem><para>Read 64-bit data from mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_put8</function></term><listitem><para>Write 8-bit data to mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_put16</function></term><listitem><para>Write 16-bit data to mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_put32</function></term><listitem><para>Write 32-bit data to mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_put64</function></term><listitem><para>Write 64-bit data to mapped memory, device register, or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_get8</function></term><listitem><para>Read multiple 8-bit data from mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_get16</function></term><listitem><para>Read multiple 16-bit data from mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_get32</function></term><listitem><para>Read multiple 32-bit data from mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_get64</function></term><listitem><para>Read multiple 64-bit data from mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_put8</function></term><listitem><para>Write multiple 8-bit data to mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_put16</function></term><listitem><para>Write multiple 16-bit data to mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_put32</function></term><listitem><para>Write multiple 32-bit data to mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_rep_put64</function></term><listitem><para>Write multiple 64-bit data to mapped memory, device register,
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_peek8</function></term><listitem><para>Cautiously read an 8-bit value from a location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_peek16</function></term><listitem><para>Cautiously read a 16-bit value from a location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_peek32</function></term><listitem><para>Cautiously read a 32-bit value from a location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_peek64</function></term><listitem><para>Cautiously read a 64-bit value from a location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_poke8</function></term><listitem><para>Cautiously write an 8-bit value to a location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_poke16</function></term><listitem><para>Cautiously write a 16-bit value to a location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_poke32</function></term><listitem><para>Cautiously write a 32-bit value to a location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_poke64</function></term><listitem><para>Cautiously write a 64-bit value to a location</para>
</listitem>
</varlistentry>
</variablelist><para><indexterm><primary>alternate access mechanisms</primary></indexterm><indexterm><primary>PCI configuration functions</primary><secondary>alternate access mechanisms</secondary></indexterm>The general programmed I/O functions listed
above can always be used rather than the <literal>mem</literal>, <literal>io</literal>,
and <literal>pci_config</literal> functions that follow. However, the following
functions can be used as alternatives in cases where the type of access is
known at compile time.</para><variablelist><varlistentry><term><function>ddi_io_get8</function></term><listitem><para>Read 8-bit data from a mapped device register in I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_get16</function></term><listitem><para>Read 16-bit data from a mapped device register in I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_get32</function></term><listitem><para>Read 32-bit data from a mapped device register in I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_put8</function></term><listitem><para>Write 8-bit data to a mapped device register in I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_put16</function></term><listitem><para>Write 16-bit data to a mapped device register in I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_put32</function></term><listitem><para>Write 32-bit data to a mapped device register in I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_rep_get8</function></term><listitem><para>Read multiple 8-bit data from a mapped device register in
I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_rep_get16</function></term><listitem><para>Read multiple 16-bit data from a mapped device register in
I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_rep_get32</function></term><listitem><para>Read multiple 32-bit data from a mapped device register in
I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_rep_put8</function></term><listitem><para>Write multiple 8-bit data to a mapped device register in I/O
space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_rep_put16</function></term><listitem><para>Write multiple 16-bit data to a mapped device register in
I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_io_rep_put32</function></term><listitem><para>Write multiple 32-bit data to a mapped device register in
I/O space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_get8</function></term><listitem><para>Read 8-bit data from a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_get16</function></term><listitem><para>Read 16-bit data from a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_get32</function></term><listitem><para>Read 32-bit data from a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_get64</function></term><listitem><para>Read 64-bit data from a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_put8</function></term><listitem><para>Write 8-bit data to a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_put16</function></term><listitem><para>Write 16-bit data to a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_put32</function></term><listitem><para>Write 32-bit data to a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_put64</function></term><listitem><para>Write 64-bit data to a mapped device in memory space or DMA
memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_get8</function></term><listitem><para>Read multiple 8-bit data from a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_get16</function></term><listitem><para>Read multiple 16-bit data from a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_get32</function></term><listitem><para>Read multiple 32-bit data from a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_get64</function></term><listitem><para>Read multiple 64-bit data from a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_put8</function></term><listitem><para>Write multiple 8-bit data to a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_put16</function></term><listitem><para>Write multiple 16-bit data to a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_put32</function></term><listitem><para>Write multiple 32-bit data to a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_mem_rep_put64</function></term><listitem><para>Write multiple 64-bit data to a mapped device in memory space
or DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_setup</function></term><listitem><para>Set up access to PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_teardown</function></term><listitem><para>Tear down access to PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_get8</function></term><listitem><para>Read 8-bit data from the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_get16</function></term><listitem><para>Read 16-bit data from the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_get32</function></term><listitem><para>Read 32-bit data from the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_get64</function></term><listitem><para>Read 64-bit data from the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_put8</function></term><listitem><para>Write 8-bit data to the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_put16</function></term><listitem><para>Write 16-bit data to the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_put32</function></term><listitem><para>Write 32-bit data to the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_config_put64</function></term><listitem><para>Write 64-bit data to the PCI Local Bus Configuration space</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcaje"><title>Deprecated Programmed I/O Functions</title><indexterm><primary>deprecated programmed I/O functions</primary>
</indexterm><indexterm><primary>programmed I/O functions</primary><secondary>deprecated</secondary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.70*"/><colspec colwidth="55.30*"/><thead><row rowsep="1"><entry><para>Deprecated Function</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>ddi_getb</function></para>
</entry><entry><para><function>ddi_get8</function></para>
</entry>
</row><row><entry><para><function>ddi_getl</function></para>
</entry><entry><para><function>ddi_get32</function></para>
</entry>
</row><row><entry><para><function>ddi_getll</function></para>
</entry><entry><para><function>ddi_get64</function></para>
</entry>
</row><row><entry><para><function>ddi_getw</function></para>
</entry><entry><para><function>ddi_get16</function></para>
</entry>
</row><row><entry><para><function>ddi_io_getb</function></para>
</entry><entry><para><function>ddi_io_get8</function></para>
</entry>
</row><row><entry><para><function>ddi_io_getl</function></para>
</entry><entry><para><function>ddi_io_get32</function></para>
</entry>
</row><row><entry><para><function>ddi_io_getw</function></para>
</entry><entry><para><function>ddi_io_get16</function></para>
</entry>
</row><row><entry><para><function>ddi_io_putb</function></para>
</entry><entry><para><function>ddi_io_put8</function></para>
</entry>
</row><row><entry><para><function>ddi_io_putl</function></para>
</entry><entry><para><function>ddi_io_put32</function></para>
</entry>
</row><row><entry><para><function>ddi_io_putw</function></para>
</entry><entry><para><function>ddi_io_put16</function></para>
</entry>
</row><row><entry><para><function>ddi_io_rep_getb</function></para>
</entry><entry><para><function>ddi_io_rep_get8</function></para>
</entry>
</row><row><entry><para><function>ddi_io_rep_getl</function></para>
</entry><entry><para><function>ddi_io_rep_get32</function></para>
</entry>
</row><row><entry><para><function>ddi_io_rep_getw</function></para>
</entry><entry><para><function>ddi_io_rep_get16</function></para>
</entry>
</row><row><entry><para><function>ddi_io_rep_putb</function></para>
</entry><entry><para><function>ddi_io_rep_put8</function></para>
</entry>
</row><row><entry><para><function>ddi_io_rep_putl</function></para>
</entry><entry><para><function>ddi_io_rep_put32</function></para>
</entry>
</row><row><entry><para><function>ddi_io_rep_putw</function></para>
</entry><entry><para><function>ddi_io_rep_put16</function></para>
</entry>
</row><row><entry><para><function>ddi_map_regs</function></para>
</entry><entry><para><function>ddi_regs_map_setup</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_getb</function></para>
</entry><entry><para><function>ddi_mem_get8</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_getl</function></para>
</entry><entry><para><function>ddi_mem_get32</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_getll</function></para>
</entry><entry><para><function>ddi_mem_get64</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_getw</function></para>
</entry><entry><para><function>ddi_mem_get16</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_putb</function></para>
</entry><entry><para><function>ddi_mem_put8</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_putl</function></para>
</entry><entry><para><function>ddi_mem_put32</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_putll</function></para>
</entry><entry><para><function>ddi_mem_put64</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_putw</function></para>
</entry><entry><para><function>ddi_mem_put16</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_getb</function></para>
</entry><entry><para><function>ddi_mem_rep_get8</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_getl</function></para>
</entry><entry><para><function>ddi_mem_rep_get32</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_getll</function></para>
</entry><entry><para><function>ddi_mem_rep_get64</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_getw</function></para>
</entry><entry><para><function>ddi_mem_rep_get16</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_putb</function></para>
</entry><entry><para><function>ddi_mem_rep_put8</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_putl</function></para>
</entry><entry><para><function>ddi_mem_rep_put32</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_putll</function></para>
</entry><entry><para><function>ddi_mem_rep_put64</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_rep_putw</function></para>
</entry><entry><para><function>ddi_mem_rep_put16</function></para>
</entry>
</row><row><entry><para><function>ddi_peekc</function></para>
</entry><entry><para><function>ddi_peek8</function></para>
</entry>
</row><row><entry><para><function>ddi_peekd</function></para>
</entry><entry><para><function>ddi_peek64</function></para>
</entry>
</row><row><entry><para><function>ddi_peekl</function></para>
</entry><entry><para><function>ddi_peek32</function></para>
</entry>
</row><row><entry><para><function>ddi_peeks</function></para>
</entry><entry><para><function>ddi_peek16</function></para>
</entry>
</row><row><entry><para><function>ddi_pokec</function></para>
</entry><entry><para><function>ddi_poke8</function></para>
</entry>
</row><row><entry><para><function>ddi_poked</function></para>
</entry><entry><para><function>ddi_poke64</function></para>
</entry>
</row><row><entry><para><function>ddi_pokel</function></para>
</entry><entry><para><function>ddi_poke32</function></para>
</entry>
</row><row><entry><para><function>ddi_pokes</function></para>
</entry><entry><para><function>ddi_poke16</function></para>
</entry>
</row><row><entry><para><function>ddi_putb</function></para>
</entry><entry><para><function>ddi_put8</function></para>
</entry>
</row><row><entry><para><function>ddi_putl</function></para>
</entry><entry><para><function>ddi_put32</function></para>
</entry>
</row><row><entry><para><function>ddi_putll</function></para>
</entry><entry><para><function>ddi_put64</function></para>
</entry>
</row><row><entry><para><function>ddi_putw</function></para>
</entry><entry><para><function>ddi_put16</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_getb</function></para>
</entry><entry><para><function>ddi_rep_get8</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_getl</function></para>
</entry><entry><para><function>ddi_rep_get32</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_getll</function></para>
</entry><entry><para><function>ddi_rep_get64</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_getw</function></para>
</entry><entry><para><function>ddi_rep_get16</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_putb</function></para>
</entry><entry><para><function>ddi_rep_put8</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_putl</function></para>
</entry><entry><para><function>ddi_rep_put32</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_putll</function></para>
</entry><entry><para><function>ddi_rep_put64</function></para>
</entry>
</row><row><entry><para><function>ddi_rep_putw</function></para>
</entry><entry><para><function>ddi_rep_put16</function></para>
</entry>
</row><row><entry><para><function>ddi_unmap_regs</function></para>
</entry><entry><para><function>ddi_regs_map_free</function></para>
</entry>
</row><row><entry><para><function>inb</function></para>
</entry><entry><para><function>ddi_io_get8</function></para>
</entry>
</row><row><entry><para><function>inl</function></para>
</entry><entry><para><function>ddi_io_get32</function></para>
</entry>
</row><row><entry><para><function>inw</function></para>
</entry><entry><para><function>ddi_io_get16</function></para>
</entry>
</row><row><entry><para><function>outb</function></para>
</entry><entry><para><function>ddi_io_put8</function></para>
</entry>
</row><row><entry><para><function>outl</function></para>
</entry><entry><para><function>ddi_io_put32</function></para>
</entry>
</row><row><entry><para><function>outw</function></para>
</entry><entry><para><function>ddi_io_put16</function></para>
</entry>
</row><row><entry><para><function>pci_config_getb</function></para>
</entry><entry><para><function>pci_config_get8</function></para>
</entry>
</row><row><entry><para><function>pci_config_getl</function></para>
</entry><entry><para><function>pci_config_get32</function></para>
</entry>
</row><row><entry><para><function>pci_config_getll</function></para>
</entry><entry><para><function>pci_config_get64</function></para>
</entry>
</row><row><entry><para><function>pci_config_getw</function></para>
</entry><entry><para><function>pci_config_get16</function></para>
</entry>
</row><row><entry><para><function>pci_config_putb</function></para>
</entry><entry><para><function>pci_config_put8</function></para>
</entry>
</row><row><entry><para><function>pci_config_putl</function></para>
</entry><entry><para><function>pci_config_put32</function></para>
</entry>
</row><row><entry><para><function>pci_config_putll</function></para>
</entry><entry><para><function>pci_config_put64</function></para>
</entry>
</row><row><entry><para><function>pci_config_putw</function></para>
</entry><entry><para><function>pci_config_put16</function></para>
</entry>
</row><row><entry><para><function>repinsb</function></para>
</entry><entry><para><function>ddi_io_rep_get8</function></para>
</entry>
</row><row><entry><para><function>repinsd</function></para>
</entry><entry><para><function>ddi_io_rep_get32</function></para>
</entry>
</row><row><entry><para><function>repinsw</function></para>
</entry><entry><para><function>ddi_io_rep_get16</function></para>
</entry>
</row><row><entry><para><function>repoutsb</function></para>
</entry><entry><para><function>ddi_io_rep_put8</function></para>
</entry>
</row><row><entry><para><function>repoutsd</function></para>
</entry><entry><para><function>ddi_io_rep_put32</function></para>
</entry>
</row><row><entry><para><function>repoutsw</function></para>
</entry><entry><para><function>ddi_io_rep_put16</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-36"><title>Direct Memory Access (DMA) Functions</title><indexterm><primary> DMA functions</primary>
</indexterm><para>The DMA functions are:</para><variablelist><varlistentry><term><function>ddi_dma_alloc_handle</function></term><listitem><para>Allocate a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_free_handle</function></term><listitem><para>Free a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_mem_alloc</function></term><listitem><para>Allocate memory for a DMA transfer</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_mem_free</function></term><listitem><para>Free previously allocated DMA memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_addr_bind_handle</function></term><listitem><para>Bind an address to a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_buf_bind_handle</function></term><listitem><para>Bind a system buffer to a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_unbind_handle</function></term><listitem><para>Unbind the address in a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_nextcookie</function></term><listitem><para>Retrieve the subsequent DMA cookie</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_getwin</function></term><listitem><para>Activate a new DMA window</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_numwin</function></term><listitem><para>Retrieve number of DMA windows</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_sync</function></term><listitem><para>Synchronize CPU and I/O views of memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_check_dma_handle</function></term><listitem><para>Check a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_set_sbus64</function></term><listitem><para>Allow 64-bit transfers on SBus</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_slaveonly</function></term><listitem><para>Report whether a device is installed in a slave access-only
location</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_iomin</function></term><listitem><para>Find the minimum alignment and transfer size for DMA</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_burstsizes</function></term><listitem><para>Find out the allowed burst sizes for a DMA mapping</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_devalign</function></term><listitem><para>Find DMA mapping alignment and minimum transfer size</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_alloc</function></term><listitem><para>Acquire a DMA channel</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_release</function></term><listitem><para>Release a DMA channel</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_getattr</function></term><listitem><para>Get the DMA engine attributes</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_prog</function></term><listitem><para>Program a DMA channel</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_stop</function></term><listitem><para>Terminate a DMA engine operation</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_disable</function></term><listitem><para>Disable a DMA channel</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_enable</function></term><listitem><para>Enable a DMA channel</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_getcnt</function></term><listitem><para>Get the remaining DMA engine count</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dmae_1stparty</function></term><listitem><para>Configure the DMA channel cascade mode</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dma_coff</function></term><listitem><para>Convert a DMA cookie to an offset within a DMA handle</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcajd"><title>Deprecated Direct Memory Access (DMA)
Functions</title><indexterm><primary>DMA functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated DMA functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec0" colwidth="44.44*"/><colspec colname="colspec1" colwidth="55.56*"/><thead><row rowsep="1"><entry><para>Deprecated Function</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>ddi_dma_addr_setup</function></para>
</entry><entry><para><function>ddi_dma_alloc_handle</function>, <function>ddi_dma_addr_bind_handle</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_buf_setup</function></para>
</entry><entry><para><function>ddi_dma_alloc_handle</function>, <function>ddi_dma_buf_bind_handle</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_curwin</function></para>
</entry><entry><para><function>ddi_dma_getwin</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_free</function></para>
</entry><entry><para><function>ddi_dma_free_handle</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_htoc</function></para>
</entry><entry><para><function>ddi_dma_addr_bind_handle</function>, <function>ddi_dma_buf_bind_handle</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_movwin</function></para>
</entry><entry><para><function>ddi_dma_getwin</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_nextseg</function></para>
</entry><entry><para><function>ddi_dma_nextcookie</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_segtocookie</function></para>
</entry><entry><para><function>ddi_dma_nextcookie</function></para>
</entry>
</row><row><entry><para><function>ddi_dma_setup</function></para>
</entry><entry><para><function>ddi_dma_alloc_handle</function>, <function>ddi_dma_addr_bind_handle</function>, <function>ddi_dma_buf_bind_handle</function></para>
</entry>
</row><row><entry><para><function>ddi_dmae_getlim</function></para>
</entry><entry><para><function>ddi_dmae_getattr</function></para>
</entry>
</row><row><entry><para><function>ddi_iopb_alloc</function></para>
</entry><entry><para><function>ddi_dma_mem_alloc</function></para>
</entry>
</row><row><entry><para><function>ddi_iopb_free</function></para>
</entry><entry><para><function>ddi_dma_mem_free</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_alloc</function></para>
</entry><entry><para><function>ddi_dma_mem_alloc</function></para>
</entry>
</row><row><entry><para><function>ddi_mem_free</function></para>
</entry><entry><para><function>ddi_dma_mem_free</function></para>
</entry>
</row><row><entry><para><function>hat_getkpfnum</function></para>
</entry><entry><para><function>ddi_dma_addr_bind_handle</function>, <function>ddi_dma_buf_bind_handle</function>, <function>ddi_dma_nextcookie</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-39"><title>User Space Access Functions</title><indexterm><primary>user space access functions</primary>
</indexterm><para>The user space access functions are:</para><variablelist><varlistentry><term><function>ddi_copyin</function></term><listitem><para>Copy data to a driver buffer</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_copyout</function></term><listitem><para>Copy data from a driver</para>
</listitem>
</varlistentry><varlistentry><term><function>uiomove</function></term><listitem><para>Copy kernel data using a <structname>uio</structname> structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ureadc</function></term><listitem><para>Add character to a <structname>uio</structname> structure</para>
</listitem>
</varlistentry><varlistentry><term><function>uwritec</function></term><listitem><para>Remove a character from a <structname>uio</structname> structure</para>
</listitem>
</varlistentry><varlistentry><term><function>getminor</function></term><listitem><para>Get minor device number.</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_model_convert_from</function></term><listitem><para>Determine a data model type mismatch</para>
</listitem>
</varlistentry><varlistentry><term><function>IOC_CONVERT_FROM</function></term><listitem><para>Determine whether there is a need to translate M_IOCTL contents</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_DECL</function></term><listitem><para>Establish the handle to application data in a possibly differing
data model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_HANDLE</function></term><listitem><para>Establish the handle to application data in a possibly differing
data model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_INIT</function></term><listitem><para>Establish the handle to application data in a possibly differing
data model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_SET_HANDLE</function></term><listitem><para>Establish the handle to application data in a possibly differing
data model</para>
</listitem>
</varlistentry><varlistentry><term><function>SIZEOF_PTR</function></term><listitem><para>Return the size of pointer in specified data model</para>
</listitem>
</varlistentry><varlistentry><term><function>SIZEOF_STRUCT</function></term><listitem><para>Return the size of a structure in the specified data model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_SIZE</function></term><listitem><para>Return the size of a structure in the application data model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_BUF</function></term><listitem><para>Return a pointer to the native mode instance of the structure</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_FADDR</function></term><listitem><para>Return a pointer to the specified field of a structure</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_FGET</function></term><listitem><para>Return the specified field of a structure in the application
data model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_FGETP</function></term><listitem><para>Return the specified pointer field of a structure in the application
data model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_FSET</function></term><listitem><para>Set a specified field of a structure in the application data
model</para>
</listitem>
</varlistentry><varlistentry><term><function>STRUCT_FSETP</function></term><listitem><para>Set a specified pointer field of a structure in the application
data model</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcajc"><title>Deprecated User Space Access Functions</title><indexterm><primary>user space access functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated user space access  functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.70*"/><colspec colwidth="55.30*"/><thead><row rowsep="1"><entry><para>Deprecated Function</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>copyin</function></para>
</entry><entry><para><function>ddi_copyin</function></para>
</entry>
</row><row><entry><para><function>copyout</function></para>
</entry><entry><para><function>ddi_copyout</function></para>
</entry>
</row><row><entry><para><function>ddi_getminor</function></para>
</entry><entry><para><function>getminor</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-42"><title>User Process Event Functions</title><indexterm><primary>user process event functions</primary>
</indexterm><para>The user process event functions are:</para><variablelist><varlistentry><term><function>pollwakeup</function></term><listitem><para>Inform a process that an event has occurred</para>
</listitem>
</varlistentry><varlistentry><term><function>proc_ref</function></term><listitem><para>Get a handle on a process to signal</para>
</listitem>
</varlistentry><varlistentry><term><function>proc_unref</function></term><listitem><para>Release a handle on a process to signal</para>
</listitem>
</varlistentry><varlistentry><term><function>proc_signal</function></term><listitem><para>Send a signal to a process</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-44"><title>User Process Information Functions</title><indexterm><primary>user process information functions</primary>
</indexterm><para>The user process information functions are:</para><variablelist><varlistentry><term><function>ddi_get_cred</function></term><listitem><para>Return a pointer to the credential structure of the caller</para>
</listitem>
</varlistentry><varlistentry><term><function>drv_priv</function></term><listitem><para>Determine process credentials privilege</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get_pid</function></term><listitem><para>Return the process ID</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcajh"><title>Deprecated User Process Information
Functions</title><indexterm><primary>user process information functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated user process information functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.44*"/><colspec colwidth="55.56*"/><thead><row rowsep="1"><entry><para>Deprecated Functions</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>drv_getparm</function></para>
</entry><entry><para><function>ddi_get_pid</function>, <function>ddi_get_cred</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-47"><title>User Application Kernel and Device Access
Functions</title><indexterm><primary>user application kernel functions</primary><secondary>table</secondary>
</indexterm><indexterm><primary>device access functions</primary><secondary>table</secondary>
</indexterm><para>The user application kernel and device access functions are:</para><variablelist><varlistentry><term><function>ddi_dev_nregs</function></term><listitem><para>Return the number of register sets a device has</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dev_regsize</function></term><listitem><para>Return the size of a device's register</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devmap_segmap</function>, <function>devmap_setup</function></term><listitem><para>Set up a user mapping to device memory using the <literal>devmap</literal> framework</para>
</listitem>
</varlistentry><varlistentry><term><function>devmap_devmem_setup</function></term><listitem><para>Export device memory to user space</para>
</listitem>
</varlistentry><varlistentry><term><function>devmap_load</function></term><listitem><para>Validate memory address translations</para>
</listitem>
</varlistentry><varlistentry><term><function>devmap_unload</function></term><listitem><para>Invalidate memory address translations</para>
</listitem>
</varlistentry><varlistentry><term><function>devmap_do_ctxmgt</function></term><listitem><para>Perform device context switching on a mapping</para>
</listitem>
</varlistentry><varlistentry><term><function>devmap_set_ctx_timeout</function></term><listitem><para>Set the timeout value for the context management callback</para>
</listitem>
</varlistentry><varlistentry><term><function>devmap_default_access</function></term><listitem><para>Default driver memory access function</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_umem_alloc</function></term><listitem><para>Allocate page-aligned kernel memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_umem_free</function></term><listitem><para>Free page-aligned kernel memory</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_umem_lock</function></term><listitem><para>Lock memory pages</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_umem_unlock</function></term><listitem><para>Unlock memory pages</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_umem_iosetup</function></term><listitem><para>Setup I/O requests to application memory</para>
</listitem>
</varlistentry><varlistentry><term><function>devmap_umem_setup</function></term><listitem><para>Export kernel memory to user space</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_model_convert_from</function></term><listitem><para>Determine data model type mismatch</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcajl"><title>Deprecated User Application Kernel
and Device Access Functions</title><indexterm><primary>user application kernel functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>device access functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated user application kernel functions</primary>
</indexterm><indexterm><primary>deprecated device access functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.70*"/><colspec colwidth="55.30*"/><thead><row rowsep="1"><entry><para>Deprecated Function</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>ddi_mapdev</function></para>
</entry><entry><para><function>devmap_setup</function></para>
</entry>
</row><row><entry><para><function>ddi_mapdev_intercept</function></para>
</entry><entry><para><function>devmap_load</function></para>
</entry>
</row><row><entry><para><function>ddi_mapdev_nointercept</function></para>
</entry><entry><para><function>devmap_unload</function></para>
</entry>
</row><row><entry><para><function>ddi_mapdev_set_device_acc_attr</function></para>
</entry><entry><para><function>devmap</function></para>
</entry>
</row><row><entry><para><function>ddi_segmap</function></para>
</entry><entry><para><function>devmap</function></para>
</entry>
</row><row><entry><para><function>ddi_segmap_setup</function></para>
</entry><entry><para><function>devmap_setup</function></para>
</entry>
</row><row><entry><para><function>hat_getkpfnum</function></para>
</entry><entry><para><function>devmap</function></para>
</entry>
</row><row><entry><para><function>ddi_mmap_get_model</function></para>
</entry><entry><para><function>devmap</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="fcaon"><title>Time-Related Functions</title><indexterm><primary>time-related functions</primary>
</indexterm><para>The time-related functions are:</para><variablelist><varlistentry><term><function>ddi_get_lbolt</function></term><listitem><para>Return the number of clock ticks since reboot</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_get_time</function></term><listitem><para>Return the current time in seconds</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_periodic_add</function></term><listitem><para>Issue nanosecond periodic timeout requests</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_periodic_delete</function></term><listitem><para>Cancel nanosecond periodic timeout requests</para>
</listitem>
</varlistentry><varlistentry><term><function>delay</function></term><listitem><para>Delay execution for a specified number of clock ticks</para>
</listitem>
</varlistentry><varlistentry><term><function>drv_hztousec</function></term><listitem><para>Convert clock ticks to microseconds</para>
</listitem>
</varlistentry><varlistentry><term><function>drv_usectohz</function></term><listitem><para>Convert microseconds to clock ticks</para>
</listitem>
</varlistentry><varlistentry><term><function>drv_usecwait</function></term><listitem><para>Busy-wait for specified interval</para>
</listitem>
</varlistentry><varlistentry><term><function>gethrtime</function></term><listitem><para>Get high-resolution time</para>
</listitem>
</varlistentry><varlistentry><term><function>gethrvtime</function></term><listitem><para>Get high-resolution LWP virtual time</para>
</listitem>
</varlistentry><varlistentry><term><function>timeout</function></term><listitem><para>Execute a function after a specified length of time</para>
</listitem>
</varlistentry><varlistentry><term><function>untimeout</function></term><listitem><para>Cancel the previous time out function call</para>
</listitem>
</varlistentry><varlistentry><term><function>drv_getparm</function></term><listitem><para><function>ddi_get_lbolt</function>, <function>ddi_get_time</function></para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcajk"><title>Deprecated Time-Related Functions</title><indexterm><primary>time-related functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated time-related functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.70*"/><colspec colwidth="55.30*"/><thead><row rowsep="1"><entry><para>Deprecated Function</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>drv_getparm</function></para>
</entry><entry><para><function>ddi_get_lbolt</function>, <function>ddi_get_time</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-53"><title>Power Management Functions</title><indexterm><primary>power management functions</primary>
</indexterm><para>The power management functions are:</para><variablelist><varlistentry><term><function>ddi_removing_power</function></term><listitem><para>Check if device loses power with DDI_SUSPEND</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_report_pmcap</function></term><listitem><para>Report the power management capability of a PCI device</para>
</listitem>
</varlistentry><varlistentry><term><function>pm_busy_component</function></term><listitem><para>Mark a component as busy</para>
</listitem>
</varlistentry><varlistentry><term><function>pm_idle_component</function></term><listitem><para>Mark a component as idle</para>
</listitem>
</varlistentry><varlistentry><term><function>pm_raise_power</function></term><listitem><para>Raise the power level of a component</para>
</listitem>
</varlistentry><varlistentry><term><function>pm_lower_power</function></term><listitem><para>Lower the power level of a component</para>
</listitem>
</varlistentry><varlistentry><term><function>pm_power_has_changed</function></term><listitem><para>Notify the power management framework of an autonomous power
level change</para>
</listitem>
</varlistentry><varlistentry><term><function>pm_trans_check</function></term><listitem><para>Device power cycle advisory check</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcaji"><title>Deprecated Power Management Functions</title><indexterm><primary>power management functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated power management functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec6" colwidth="176*"/><colspec colname="colspec7" colwidth="220*"/><thead><row rowsep="1"><entry><para>Function Name</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>ddi_dev_is_needed</function></para>
</entry><entry><para>Inform the system that a device's component is required</para>
</entry>
</row><row><entry><para><function>pm_create_components</function></para>
</entry><entry><para>Create power-manageable components</para>
</entry>
</row><row><entry><para><function>pm_destroy_components</function></para>
</entry><entry><para>Destroy power-manageable components</para>
</entry>
</row><row><entry><para><function>pm_get_normal_power</function></para>
</entry><entry><para>Get the normal power level of a device component</para>
</entry>
</row><row><entry><para><function>pm_set_normal_power</function></para>
</entry><entry><para>Set the normal power level of a device component</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="geyxr"><title>Fault Management Functions</title><indexterm><primary>fault management</primary><secondary>interfaces</secondary>
</indexterm><para>The fault management functions are:</para><variablelist><varlistentry><term><function>ddi_fm_init</function></term><listitem><para>Allocates and initializes resources based on declared fault
management capabilities</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_fini</function></term><listitem><para>Cleans up resources that were allocated for this device instance
to support fault management capabilities declared to <function>ddi_fm_init</function></para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_capable</function></term><listitem><para>Returns the capability bit mask currently set for this device
instance</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_handler_register</function></term><listitem><para>Registers an error handler callback routine with the IO Fault
Management framework</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_handler_unregister</function></term><listitem><para>Removes an error handler callback routine that was registered
with <function>ddi_fm_handler_register</function></para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_acc_err_get</function></term><listitem><para>Returns the error status for an access handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_dma_err_get</function></term><listitem><para>Returns the error status for a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_acc_err_clear</function></term><listitem><para>Clears the error status for an access handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_dma_err_clear</function></term><listitem><para>Clears the error status for a DMA handle</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_ereport_post</function></term><listitem><para>Queues an encoded fault management error report name-value
pair list for delivery to the Fault Manager daemon, <interfacename>fmd</interfacename>(1M)</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fm_service_impact</function></term><listitem><para>Reports the impact of an error</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_ereport_setup</function></term><listitem><para>Initializes support for error report generation and sets up
the resources for subsequent accesses to PCI, PCI/X, or PCI Express configuration
space</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_ereport_teardown</function></term><listitem><para>Releases any resources allocated and setup by <function>pci_ereport_setup</function> for this device instance</para>
</listitem>
</varlistentry><varlistentry><term><function>pci_ereport_post</function></term><listitem><para>Scans for and posts any PCI, PCI/X, or PCI Express bus errors</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-55"><title>Kernel Statistics Functions</title><indexterm><primary>kernel statistics functions</primary>
</indexterm><indexterm><primary>kstats</primary><secondary>functions</secondary>
</indexterm><para>The kernel statistics (kstats) functions are:</para><variablelist><varlistentry><term><function>kstat_create</function></term><listitem><para>Create and initialize a new kstat</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_delete</function></term><listitem><para>Remove a kstat from the system</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_install</function></term><listitem><para>Add a fully initialized kstat to the system</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_named_init</function></term><listitem><para>Initialize a named kstat</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_runq_back_to_waitq</function></term><listitem><para>Record a transaction migration from run queue to the wait
queue</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_runq_enter</function></term><listitem><para>Record a transaction addition to the run queue</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_runq_exit</function></term><listitem><para>Record a transaction removal from the run queue</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_waitq_enter</function></term><listitem><para>Record a transaction addition to the wait queue</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_waitq_exit</function></term><listitem><para>Record a transaction removal from the wait queue</para>
</listitem>
</varlistentry><varlistentry><term><function>kstat_waitq_to_runq</function></term><listitem><para>Record a transaction migration from the wait queue to the
run queue</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-57"><title>Kernel Logging and Printing Functions</title><indexterm><primary>kernel logging functions</primary>
</indexterm><indexterm><primary>printing functions</primary>
</indexterm><para>The kernel logging and printing functions are:</para><variablelist><varlistentry><term><function>cmn_err</function>, <function>vcmn_err</function></term><listitem><para>Display an error message</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_report_dev</function></term><listitem><para>Announce a device</para>
</listitem>
</varlistentry><varlistentry><term><function>strlog</function></term><listitem><para>Submit messages to the log driver</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_dev_report_fault</function></term><listitem><para>Report a hardware failure</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_errmsg</function></term><listitem><para>Display a SCSI request sense message</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_log</function></term><listitem><para>Display a SCSI-device-related message</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_vu_errmsg</function></term><listitem><para>Display a SCSI request sense message</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-59"><title>Buffered I/O Functions</title><indexterm><primary>buffered I/O functions</primary>
</indexterm><para>The buffered I/O functions are:</para><variablelist><varlistentry><term><function>physio</function></term><listitem><para>Perform physical I/O</para>
</listitem>
</varlistentry><varlistentry><term><function>aphysio</function></term><listitem><para>Perform asynchronous physical I/O</para>
</listitem>
</varlistentry><varlistentry><term><function>anocancel</function></term><listitem><para>Prevent cancellation of an asynchronous I/O request</para>
</listitem>
</varlistentry><varlistentry><term><function>minphys</function></term><listitem><para>Limit the <function>physio</function> buffer size</para>
</listitem>
</varlistentry><varlistentry><term><function>biowait</function></term><listitem><para>Suspend processes pending completion of block I/O</para>
</listitem>
</varlistentry><varlistentry><term><function>biodone</function></term><listitem><para>Release the buffer after buffer I/O transfer and notify blocked
threads</para>
</listitem>
</varlistentry><varlistentry><term><function>bioerror</function></term><listitem><para>Indicate the error in a buffer header</para>
</listitem>
</varlistentry><varlistentry><term><function>geterror</function></term><listitem><para>Return an I/O error</para>
</listitem>
</varlistentry><varlistentry><term><function>bp_mapin</function></term><listitem><para>Allocate virtual address space</para>
</listitem>
</varlistentry><varlistentry><term><function>bp_mapout</function></term><listitem><para>Deallocate virtual address space</para>
</listitem>
</varlistentry><varlistentry><term><function>disksort</function></term><listitem><para>Use a single-direction elevator seek strategy to sort for
buffers</para>
</listitem>
</varlistentry><varlistentry><term><function>getrbuf</function></term><listitem><para>Get a raw buffer header</para>
</listitem>
</varlistentry><varlistentry><term><function>freerbuf</function></term><listitem><para>Free a raw buffer header</para>
</listitem>
</varlistentry><varlistentry><term><function>biosize</function></term><listitem><para>Return the size of a buffer structure</para>
</listitem>
</varlistentry><varlistentry><term><function>bioinit</function></term><listitem><para>Initialize a buffer structure</para>
</listitem>
</varlistentry><varlistentry><term><function>biofini</function></term><listitem><para>Uninitialize a buffer structure</para>
</listitem>
</varlistentry><varlistentry><term><function>bioreset</function></term><listitem><para>Reuse a private buffer header after I/O is complete</para>
</listitem>
</varlistentry><varlistentry><term><function>bioclone</function></term><listitem><para>Clone another buffer</para>
</listitem>
</varlistentry><varlistentry><term><function>biomodified</function></term><listitem><para>Check whether a buffer is modified</para>
</listitem>
</varlistentry><varlistentry><term><function>clrbuf</function></term><listitem><para>Erase the contents of a buffer</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-61"><title>Virtual Memory Functions</title><indexterm><primary>virtual memory functions</primary><secondary>table</secondary>
</indexterm><para>The virtual memory functions are:</para><variablelist><varlistentry><term><function>ddi_btop</function></term><listitem><para>Convert device bytes to pages (round down)</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_btopr</function></term><listitem><para>Convert device bytes to pages (round up)</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_ptob</function></term><listitem><para>Convert device pages to bytes</para>
</listitem>
</varlistentry><varlistentry><term><function>btop</function></term><listitem><para>Convert size in bytes to size in pages (round down)</para>
</listitem>
</varlistentry><varlistentry><term><function>btopr</function></term><listitem><para>Convert size in bytes to size in pages (round up)</para>
</listitem>
</varlistentry><varlistentry><term><function>ptob</function></term><listitem><para>Convert size in pages to size in bytes</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcajj"><title>Deprecated Virtual Memory Functions</title><indexterm><primary>virtual memory functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated virtual memory functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.44*"/><colspec colwidth="55.56*"/><thead><row rowsep="1"><entry><para>Deprecated Functions</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>hat_getkpfnum</function></para>
</entry><entry><para><function>devmap</function>, <function>ddi_dma_*_bind_handle</function>, <function>ddi_dma_nextcookie</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-64"><title>Device ID Functions</title><indexterm><primary>device ID functions</primary>
</indexterm><para>The device ID functions are:</para><variablelist><varlistentry><term><function>ddi_devid_init</function></term><listitem><para>Allocate a device ID structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_free</function></term><listitem><para>Free a device ID structure</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_register</function></term><listitem><para>Register a device ID</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_unregister</function></term><listitem><para>Unregister a device ID</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_compare</function></term><listitem><para>Compare two device IDs</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_sizeof</function></term><listitem><para>Return the size of a device ID</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_valid</function></term><listitem><para>Validate a device ID</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_str_encode</function></term><listitem><para>Encode a device ID and minor_name into a null-terminated ASCII
string; return a pointer to that string</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_str_decode</function></term><listitem><para>Decode the device ID and minor_name from a previously encoded
string; allocate and return pointers to the extracted parts</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_devid_str_free</function></term><listitem><para>Free all strings returned by the <literal>ddi_devid_*</literal> functions</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-66"><title>SCSI Functions</title><indexterm><primary>SCSI functions</primary>
</indexterm><para>The SCSI functions are:</para><variablelist><varlistentry><term><function>scsi_probe</function></term><listitem><para>Probe a SCSI device</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_unprobe</function></term><listitem><para>Free resources allocated during initial probing</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_alloc_consistent_buf</function></term><listitem><para>Allocate an I/O buffer for SCSI DMA</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_free_consistent_buf</function></term><listitem><para>Free a previously allocated SCSI DMA I/O buffer</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_init_pkt</function></term><listitem><para>Prepare a complete SCSI packet</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_destroy_pkt</function></term><listitem><para>Free an allocated SCSI packet and its DMA resource</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_setup_cdb</function></term><listitem><para>Set up SCSI command descriptor block (CDB)</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_transport</function></term><listitem><para>Start a SCSI command</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_poll</function></term><listitem><para>Run a polled SCSI command</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_ifgetcap</function></term><listitem><para>Get SCSI transport capability</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_ifsetcap</function></term><listitem><para>Set SCSI transport capability</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_sync_pkt</function></term><listitem><para>Synchronize CPU and I/O views of memory</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_abort</function></term><listitem><para>Abort a SCSI command</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_reset</function></term><listitem><para>Reset a SCSI bus or target</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_reset_notify</function></term><listitem><para>Notify the target driver of bus resets</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_cname</function></term><listitem><para>Decode a SCSI command</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_dname</function></term><listitem><para>Decode a SCSI peripheral device type</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_mname</function></term><listitem><para>Decode a SCSI message</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_rname</function></term><listitem><para>Decode a SCSI packet completion reason</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_sname</function></term><listitem><para>Decode a SCSI sense key</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_errmsg</function></term><listitem><para>Display a SCSI request sense message</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_log</function></term><listitem><para>Display a SCSI-device-related message</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_vu_errmsg</function></term><listitem><para>Display a SCSI request sense message</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_init</function></term><listitem><para>SCSI HBA system initialization routine</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_fini</function></term><listitem><para>SCSI HBA system completion routine</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_attach_setup</function></term><listitem><para>SCSI HBA attach routine</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_detach</function></term><listitem><para>SCSI HBA detach routine</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_probe</function></term><listitem><para>Default SCSI HBA probe function</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_tran_alloc</function></term><listitem><para>Allocate a transport structure</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_tran_free</function></term><listitem><para>Free a transport structure</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_pkt_alloc</function></term><listitem><para>Allocate a <literal>scsi_pkt</literal> structure</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_pkt_free</function></term><listitem><para>Free a <literal>scsi_pkt</literal> structure</para>
</listitem>
</varlistentry><varlistentry><term><function>scsi_hba_lookup_capstr</function></term><listitem><para>Return an index matching capability string</para>
</listitem>
</varlistentry>
</variablelist><table frame="topbot" id="fcajf"><title>Deprecated SCSI Functions</title><indexterm><primary>SCSI functions</primary><secondary>deprecated</secondary>
</indexterm><indexterm><primary>deprecated SCSI functions</primary>
</indexterm><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="44.44*"/><colspec colwidth="55.56*"/><thead><row rowsep="1"><entry><para>Deprecated Function</para>
</entry><entry><para>Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><function>free_pktiopb</function></para>
</entry><entry><para><function>scsi_free_consistent_buf</function></para>
</entry>
</row><row><entry><para><function>get_pktiopb</function></para>
</entry><entry><para><function>scsi_alloc_consistent_buf</function></para>
</entry>
</row><row><entry><para><function>makecom_g0</function></para>
</entry><entry><para><function>scsi_setup_cdb</function></para>
</entry>
</row><row><entry><para><function>makecom_g0_s</function></para>
</entry><entry><para><function>scsi_setup_cdb</function></para>
</entry>
</row><row><entry><para><function>makecom_g1</function></para>
</entry><entry><para><function>scsi_setup_cdb</function></para>
</entry>
</row><row><entry><para><function>makecom_g5</function></para>
</entry><entry><para><function>scsi_setup_cdb</function></para>
</entry>
</row><row><entry><para><function>scsi_dmafree</function></para>
</entry><entry><para><function>scsi_destroy_pkt</function></para>
</entry>
</row><row><entry><para><function>scsi_dmaget</function></para>
</entry><entry><para><function>scsi_init_pkt</function></para>
</entry>
</row><row><entry><para><function>scsi_hba_attach</function></para>
</entry><entry><para><function>scsi_hba_attach_setup</function></para>
</entry>
</row><row><entry><para><function>scsi_pktalloc</function></para>
</entry><entry><para><function>scsi_init_pkt</function></para>
</entry>
</row><row><entry><para><function>scsi_pktfree</function></para>
</entry><entry><para><function>scsi_destroy_pkt</function></para>
</entry>
</row><row><entry><para><function>scsi_resalloc</function></para>
</entry><entry><para><function>scsi_init_pkt</function></para>
</entry>
</row><row><entry><para><function>scsi_resfree</function></para>
</entry><entry><para><function>scsi_destroy_pkt</function></para>
</entry>
</row><row><entry><para><function>scsi_slave</function></para>
</entry><entry><para><function>scsi_probe</function></para>
</entry>
</row><row><entry><para><function>scsi_unslave</function></para>
</entry><entry><para><function>scsi_unprobe</function></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="ddidkisvc-69"><title>Resource Map Management Functions</title><indexterm><primary>resource map functions</primary>
</indexterm><para>The resource map management functions are:</para><variablelist><varlistentry><term><function>rmallocmap</function></term><listitem><para>Allocate a resource map</para>
</listitem>
</varlistentry><varlistentry><term><function>rmallocmap_wait</function></term><listitem><para>Allocate a resource map, wait if necessary</para>
</listitem>
</varlistentry><varlistentry><term><function>rmfreemap</function></term><listitem><para>Free a resource map</para>
</listitem>
</varlistentry><varlistentry><term><function>rmalloc</function></term><listitem><para>Allocate space from a resource map</para>
</listitem>
</varlistentry><varlistentry><term><function>rmalloc_wait</function></term><listitem><para>Allocate space from a resource map, wait if necessary</para>
</listitem>
</varlistentry><varlistentry><term><function>rmfree</function></term><listitem><para>Free space back into a resource map</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-71"><title>System Global State</title><indexterm><primary>system global state functions</primary>
</indexterm><variablelist><varlistentry><term><function>ddi_in_panic</function></term><listitem><para>Determine whether the system is in panic state</para>
</listitem>
</varlistentry>
</variablelist>
</sect1><sect1 id="ddidkisvc-73"><title>Utility Functions</title><indexterm><primary>utility functions</primary><secondary>table</secondary>
</indexterm><para>The utility functions are:</para><variablelist><varlistentry><term><function>nulldev</function></term><listitem><para>Zero return function</para>
</listitem>
</varlistentry><varlistentry><term><function>nodev</function></term><listitem><para>Error return function</para>
</listitem>
</varlistentry><varlistentry><term><function>nochpoll</function></term><listitem><para>Error return function for non-pollable devices</para>
</listitem>
</varlistentry><varlistentry><term><function>ASSERT</function></term><listitem><para>Expression verification</para>
</listitem>
</varlistentry><varlistentry><term><function>bcopy</function></term><listitem><para>Copy data between address locations in the kernel</para>
</listitem>
</varlistentry><varlistentry><term><function>bzero</function></term><listitem><para>Clear memory for a given number of bytes</para>
</listitem>
</varlistentry><varlistentry><term><function>bcmp</function></term><listitem><para>Compare two byte arrays</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_ffs</function></term><listitem><para>Find the first bit set in a long integer</para>
</listitem>
</varlistentry><varlistentry><term><function>ddi_fls</function></term><listitem><para>Find the last bit set in a long integer</para>
</listitem>
</varlistentry><varlistentry><term><function>swab</function></term><listitem><para>Swap bytes in 16-bit halfwords</para>
</listitem>
</varlistentry><varlistentry><term><function>strcmp</function></term><listitem><para>Compare two null-terminated strings</para>
</listitem>
</varlistentry><varlistentry><term><function>strncmp</function></term><listitem><para>Compare two null-terminated strings, with length limit</para>
</listitem>
</varlistentry><varlistentry><term><function>strlen</function></term><listitem><para>Determine the number of non-null bytes in a string</para>
</listitem>
</varlistentry><varlistentry><term><function>strnlen</function></term><listitem><para>(Available starting with SXCE build 88)
Determine the number of non-null bytes in a string, with length limit</para>
</listitem>
</varlistentry><varlistentry><term><function>strcpy</function></term><listitem><para>Copy a string from one location to another</para>
</listitem>
</varlistentry><varlistentry><term><function>strncpy</function></term><listitem><para>Copy a string from one location to another, with length limit</para>
</listitem>
</varlistentry><varlistentry><term><function>strchr</function></term><listitem><para>Find a character in a string</para>
</listitem>
</varlistentry><varlistentry><term><function>sprintf</function>, <function>vsprintf</function></term><listitem><para>Format characters in memory</para>
</listitem>
</varlistentry><varlistentry><term><function>numtos</function></term><listitem><para>Convert an integer to a decimal string</para>
</listitem>
</varlistentry><varlistentry><term><function>stoi</function></term><listitem><para>Convert a decimal string to an integer</para>
</listitem>
</varlistentry><varlistentry><term><function>max</function></term><listitem><para>Return the larger of two integers</para>
</listitem>
</varlistentry><varlistentry><term><function>min</function></term><listitem><para>Return the lesser of two integers</para>
</listitem>
</varlistentry><varlistentry><term><function>va_arg</function></term><listitem><para>Finds the next value in a variable argument list</para>
</listitem>
</varlistentry><varlistentry><term><function>va_copy</function></term><listitem><para>Copies the state of a variable argument list</para>
</listitem>
</varlistentry><varlistentry><term><function>va_end</function></term><listitem><para>Deletes pointer to a variable argument list</para>
</listitem>
</varlistentry><varlistentry><term><function>va_start</function></term><listitem><para>Finds the pointer to the start of a variable argument list</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
</appendix><?Pub *0000113783 0?>