Writing Device Drivers
Previous Next

D

data alignment for SPARC, SPARC Data Alignment
data corruption
control data, Corruption of Device Management and Control Data
detecting, Detecting Corrupted Data
device management data, Corruption of Device Management and Control Data
malignant, definition of, Corruption of Device Management and Control Data
misleading, definition of, Corruption of Device Management and Control Data
of received data, Corruption of Received Data
data sharing
using devmap(), Data Sharing in devmap()
using ioctl(), Data Sharing in ioctl()
using mmap(), Data Sharing in mmap()
data storage classes, Storage Classes of Driver Data
data structures
dev_ops structure, dev_ops Structure
GLD
Declarations and Data Structures
gld_stats Structure
modldrv structure, modldrv Structure
data transfers, character drivers, I/O Request Handling
DDI-compliant drivers
byte ordering, Endianness
compliance testing, DDI/DKI Compliance Testing
ddi_create_minor_node() function, Creating Minor Device Nodes
ddi_device_acc_attr structure, Access Attributes Structure
ddi_device_copy() function, ddi_device_copy() Argument Changes
ddi_device_zero() function, ddi_device_zero() Argument Changes
ddi_devid_free() function, Retrieving Target Device Information
DDI/DKI
See also LDI
design considerations, DDI/DKI Facilities
and disk performance, Disk Performance
overview, DDI/DKI Interfaces
purpose in kernel, What Is the Kernel?
ddi_dma_attr structure
ddi_dma_attr Structure
DMA Attributes Structure
ddi_dma_attr
ddi_dma_cookie structure, ddi_dma_cookie Structure Changes
ddi_dma_getwin() function, DMA Software Components: Handles, Windows, and Cookies
ddi_dma_mem_alloc() function, ddi_dma_mem_alloc() Argument Changes
ddi_dma_nextseg() function, DMA Software Components: Handles, Windows, and Cookies
ddi_dma_sync() function
DMA Isolation
Configuring the Test Harness
ddi_driver_major() function
Block Device Autoconfiguration
Block Device Autoconfiguration
ddi_enter_critical() function, Timing-Critical Sections
ddi_eventcookie_t, Receiving Asynchronous Device Event Notification
ddi_fm_acc_err_clear() function, Getting Error Status
ddi_fm_acc_err_get() function
Access Attributes Structure
Access Attributes Structure
ddi_fm_capable() function, Getting the Fault Management Capability Bit Mask
ddi_fm_dma_err_get() function, DMA Attributes Structure
ddi_fm_ereport_post() function
Reporting Errors
Reporting Errors
ddi_fm_error structure
Registering an Error Handler
Registering an Error Handler
Fault Management Data and Status Structure
ddi_fm_fini() function, Cleaning Up Fault Management Resources
ddi_fm_handler_register() function
Access Attributes Structure
Registering an Error Handler
ddi_fm_handler_unregister() function, Registering an Error Handler
ddi_fm_init() function, Declaring Fault Management Capabilities
ddi_fm_service_impact() function, Reporting Errors
DDI function tables, Summary of Solaris DDI/DKI Services
ddi_get_cred() function
drv_getparm() Argument Changes
Data Sharing in ioctl()
ddi_get_driver_private() function
scsi_device Structure
GLD Driver Requirements
ddi_get_instance() function, gld_mac_info Structure
ddi_get_lbolt() function, drv_getparm() Argument Changes
ddi_get_pid() function, drv_getparm() Argument Changes
ddi_get_time() function, drv_getparm() Argument Changes
ddi_get()X functions
Exclusive Use of DDI Access Handles
Fault Injection
DDI_INFO_DEVT2DEVINFO, getinfo() Entry Point
DDI_INFO_DEVT2INSTANCE, getinfo() Entry Point
ddi_intr_add_handler() function
MSI-X Interrupts
Interrupt Initialization and Destruction Functions
Registering Interrupts
ddi_intr_add_softint() function, Soft Interrupt Functions
ddi_intr_alloc() function
MSI-X Interrupts
Interrupt Initialization and Destruction Functions
ddi_intr_block_disable() function, Interrupt Initialization and Destruction Functions
ddi_intr_block_enable() function, Interrupt Initialization and Destruction Functions
DDI_INTR_CLAIMED, Interrupt Handler Functionality
ddi_intr_clr_mask() function
Interrupt Initialization and Destruction Functions
Interrupt Function Examples
ddi_intr_disable() function
MSI-X Interrupts
Interrupt Initialization and Destruction Functions
ddi_intr_dup_handler() function
MSI-X Interrupts
Interrupt Initialization and Destruction Functions
ddi_intr_enable() function
MSI-X Interrupts
Interrupt Initialization and Destruction Functions
ddi_intr_free() function
MSI-X Interrupts
Interrupt Initialization and Destruction Functions
ddi_intr_get_cap() function, Interrupt Capability Functions
ddi_intr_get_hilevel_pri() function
Priority Management Functions
Handling High-Level Interrupts
ddi_intr_get_navail() function, Interrupt Capability Functions
ddi_intr_get_nintrs() function, Interrupt Capability Functions
ddi_intr_get_pending() function
Interrupt Initialization and Destruction Functions
Interrupt Function Examples
ddi_intr_get_pri() function
Priority Management Functions
Handling High-Level Interrupts
ddi_intr_get_softint_pri() function, Soft Interrupt Functions
ddi_intr_get_supported_types() function, Interrupt Capability Functions
ddi_intr_hilevel() function, High-Level Interrupts
ddi_intr_remove_handler() function
MSI-X Interrupts
Interrupt Initialization and Destruction Functions
ddi_intr_remove_softint() function, Soft Interrupt Functions
ddi_intr_set_cap() function, Interrupt Initialization and Destruction Functions
ddi_intr_set_mask() function
Interrupt Initialization and Destruction Functions
Interrupt Function Examples
ddi_intr_set_pri() function, Priority Management Functions
ddi_intr_set_softint_pri() function
Soft Interrupt Functions
Interrupt Function Examples
ddi_intr_trigger_softint() function
High-Level Interrupts
Soft Interrupt Functions
DDI_INTR_UNCLAIMED, Interrupt Handler Functionality
ddi_log_sysevent() function
Using ddi_log_sysevent() to Log Events
Using ddi_log_sysevent() to Log Events
ddi_model_convert_from() function, Data Sharing in ioctl()
ddi_peek() function, Access Attributes Structure
ddi_poke() function, Access Attributes Structure
ddi_prop_free() function, Driver Source File
ddi_prop_get_int() function, HBA Configuration Properties
ddi_prop_lookup() function, Looking Up Properties
ddi_prop_lookup_string() function, Driver Source File
ddi_prop_op() function, prop_op() Entry Point
ddi_ptob() function, DMA Isolation
ddi_put()X functions
Exclusive Use of DDI Access Handles
Fault Injection
ddi_regs_map_setup() function
ddi_device_acc_attr Structure
Exclusive Use of DDI Access Handles
Fault Injection
Configuring the Test Harness
ddi_removing_power() function, detach() Entry Point
ddi_rep_get()X functions, Exclusive Use of DDI Access Handles
ddi_rep_put()X functions, Exclusive Use of DDI Access Handles
DDI_RESUME, detach() function, detach() Entry Point
ddi_set_driver_private() function, scsi_device Structure
DDI_SUSPEND, detach() function, detach() Entry Point
ddi_umem_alloc() function
Allocating Kernel Memory for User Access
DMA Isolation
ddi_umem_free() function, Freeing Kernel Memory Exported for User Access
DDX module, The X Window System Frame Buffer Specific DDX Module
DE (diagnosis engine), definition, Diagnosing Faults
deadman kernel feature, Enable the Deadman Feature to Avoid a Hard Hang
DEBUG symbol
Compiling and Linking the Driver
Use ASSERT() to Catch Invalid Assumptions
debugging
ASSERT() macro, Use ASSERT() to Catch Invalid Assumptions
booting an alternate kernel, To Boot With an Alternate Kernel
coding hints, Debugging Preparation Techniques
common tasks, Useful Debugging Tasks With kmdb and mdb
conditional compilation, Use Conditional Compilation to Toggle Costly Debugging Features
console frame buffer drivers, Developing, Testing, and Debugging Console Frame Buffer Drivers
DEBUG symbol, Use ASSERT() to Catch Invalid Assumptions
detecting kernel memory leaks, Detecting Kernel Memory Leaks
displaying kernel data structures, Obtaining Kernel Data Structure Information
system file, Setting Up Test Modules
kmdb debugger, Using the kmdb Kernel Debugger
kmem_flags, Setting kmem_flags Debugging Flags
mdb debugger, Using the mdb Modular Debugger
moddebug, Loading and Unloading Test Modules
postmortem, Postmortem Debugging
preparing for disasters, Avoiding Data Loss on a Test System
setting up a serial connection, Testing With a Serial Connection
setting up a SPARC test system, Setting Up a Target System on the SPARC Platform
setting up an x86 test system, Setting Up a Target System on the x86 Platform
system registers, Exploring System Registers With kmdb
tools, Debugging Tools
using kernel variables, Modifying Kernel Variables
using the SPARC PROM for device debugging, PROM on SPARC Machines
writing mdb commands, Writing Debugger Commands With mdb
delay() function, delay() and timeout() Argument Changes
changes to, delay() and timeout() Argument Changes
dependency, Power Management Dependencies
deprecated device access functions, User Application Kernel and Device Access Functions
deprecated DMA functions, Direct Memory Access (DMA) Functions
deprecated interrupt functions, Interrupt Functions
deprecated memory allocation functions, Memory Allocation and Deallocation Functions
deprecated power management functions, Power Management Functions
deprecated programmed I/O functions, Programmed I/O Functions
deprecated property functions, Property Functions
deprecated SCSI functions, SCSI Functions
deprecated time-related functions, Time-Related Functions
deprecated user application kernel functions, User Application Kernel and Device Access Functions
deprecated user process information functions, User Process Information Functions
deprecated user space access functions, User Space Access Functions
deprecated virtual memory functions, Virtual Memory Functions
descriptor tree
The Descriptor Tree
Registering Drivers to Gain Device Access
dest_adcent argument, ddi_device_copy(), changes to, ddi_device_copy() Argument Changes
detach() entry point
active power management, Device Power Management
description of, detach() Entry Point
hot removal, Hot Removal
system power management, System Power Management
detecting kernel memory leaks with mdb, Detecting Kernel Memory Leaks
dev_advcnt argument, ddi_device_zero(), changes to, ddi_device_zero() Argument Changes
dev_datasz argument, ddi_device_copy(), changes to, ddi_device_copy() Argument Changes
dev_datasz argument, ddi_device_zero(), changes to, ddi_device_zero() Argument Changes
dev_info_t functions, Device Information Tree Node (dev_info_t) Functions
dev_ops structure, description of, dev_ops Structure
dev_t functions, Device (dev_t) Functions
devfsadm command, Installing Drivers with add_drv
device
alternate settings, How USB Devices Appear to the System
composite
Devices With Multiple Interfaces
Managing Entire Devices
configurations, How USB Devices Appear to the System
endpoints, How USB Devices Appear to the System
interface number, Getting Interface Numbers
interfaces, How USB Devices Appear to the System
splitting interfaces
Devices With Multiple Interfaces
Multiple-Configuration Devices
device access functions
block drivers, open() Entry Point (Block Drivers)
character drivers, open() Entry Point (Character Drivers)
deprecated, User Application Kernel and Device Access Functions
table, User Application Kernel and Device Access Functions
device configuration, entry points, Device Configuration Concepts
device context management, What Is a Device Context?
entry points, Entry Points for Device Context Management
model, Context Management Model
operation, Context Management Operation
device-dependency, power.conf entry, Power Management Dependencies
device-dependency-property, power.conf entry, Power Management Dependencies
device directory, recovering, Recovering the Device Directory
device drivers
See also compiling drivers
See also linking drivers
See also loading drivers
64-bit drivers
I/O Control Support for 64-Bit Capable Device Drivers
Making a Device Driver 64-Bit Ready
access from within kernel, Layered Driver Interface (LDI)
aliases, Updating Driver Information
binding to device node
Binding a Driver to a Device
Compatible Device Names
bindings, Checking Device Driver Bindings
block driver, Entry Points for Block Device Drivers
configuration descriptor clouds, Hot Reinsertion
context, Driver Context
debugging, Debugging, Testing, and Tuning Device Drivers
coding hints, Debugging Preparation Techniques
setting up a serial connection, Testing With a Serial Connection
tools, Debugging Tools
using the PROM, PROM on SPARC Machines
definition, What Is a Device Driver?
entry points, What Is a Device Driver Entry Point?
error handling, Error Handling
header files, Header Files
hubd USB hub driver, Hot Insertion
interface association nodes, Devices With Interface-Association Descriptors
loadable interface, Loadable Driver Interfaces
modifying information with update_drv, Updating Driver Information
modifying permissions, Updating Driver Information
module configuration, Source Files
network drivers, Drivers for Network Devices
offlining
Hotplug Callbacks
Hot Removal
packaging, Driver Packaging
printing messages, Returning Errors
purpose in kernel, What Is the Kernel?
source files, Source Files
standard character driver, Entry Points for Character Device Drivers
testing
Criteria for Testing Drivers
Testing Drivers
tuning, Tuning Drivers
USB driver, USB Drivers
usb_ia USB interface association driver, Devices With Interface-Association Descriptors
usb_mid USB multi-interface driver
Devices With Multiple Interfaces
Devices With Interface-Association Descriptors
Hot Removal
Getting Interface Numbers
using kstats, Kernel Statistics
device ID functions, Device ID Functions
device information
binding a driver to a device, Binding a Driver to a Device
binding a driver to a USB device, Compatible Device Names
compatible device names, Compatible Device Names
di_link_next_by_lnode() function, Device Information Library Interfaces
di_link_next_by_node() function, Device Information Library Interfaces
di_link_private_get() function, Device Information Library Interfaces
di_link_private_set() function, Device Information Library Interfaces
di_link_spectype() function, Device Information Library Interfaces
di_link_t, Device Information Library Interfaces
di_link_to_lnode() function, Device Information Library Interfaces
di_lnode_devinfo() function, Device Information Library Interfaces
di_lnode_devt() function, Device Information Library Interfaces
di_lnode_name() function, Device Information Library Interfaces
di_lnode_next() function, Device Information Library Interfaces
di_lnode_private_get() function, Device Information Library Interfaces
di_lnode_private_set() function, Device Information Library Interfaces
di_lnode_t, Device Information Library Interfaces
di_node_t, Device Information Library Interfaces
di_walk_link() function, Device Information Library Interfaces
di_walk_lnode() function, Device Information Library Interfaces
DINFOLYR, Device Information Library Interfaces
LDI, Retrieving Target Device Information
lnode, Device Information Library Interfaces
nblocks property, Device Sizes
Nblocks property, Device Sizes
property values, Retrieving Target Device Property Values
self-identifying, Device Identification
tree structure
Device Tree Components
Device Tree Components
device instances, Fault Injection
device interrupts, See interrupts; interrupt handling
device layering, See LDI
device memory
D_DEVMAP flag in cb_ops, cb_ops Structure
mapping
Entry Points for Memory Mapped Devices
Mapping Device and Kernel Memory
device node, USB Devices and the Solaris Device Tree
device number, description of, Devices as Special Files
device polling, Interrupt Handler Functionality
in character drivers, Multiplexing I/O on File Descriptors
chpoll() function, Multiplexing I/O on File Descriptors
poll() function, Multiplexing I/O on File Descriptors
device power management
components, Power Management Components
definition of, Power Management Framework
dependency, Power Management Dependencies
entry points, power() Entry Point
interfaces, Device Power Management Interfaces
model, Device Power Management Model
pm_busy_component() function
Power Management States
Busy-Idle State Transitions
Device Power Management
Device Power Management
pm_idle_component() function
Power Management States
Busy-Idle State Transitions
Busy-Idle State Transitions
Device Power Management
Device Power Management
pm_lower_power() function
Power Levels
Device Power Management
pm_raise_power() function
Multiple Power Management Components
Power Levels
Busy-Idle State Transitions
Device Power Management
Device Power Management
power() entry point
Device Power Management
Device Power Management
power() function, power() Entry Point
power levels, Power Levels
state transitions, Busy-Idle State Transitions
usb_create_pm_components() function, Device Power Management
USB devices, Device Power Management
device registers, mapping, attach() Entry Point
device state in power management, Hardware State
device tree
displaying, Displaying the Device Tree
navigating, in debugger, Obtaining Device Tree Information
overview, Device Tree Components
purpose in kernel, What Is the Kernel?
device usage, Kernel Interfaces
See LDI
/devices directory
description of, Devices as Special Files
displaying the device tree, /devices Directory
devinfo tree, Fault Injection
devmap_ entry point, devmap_access() function, devmap_access() Entry Point
devmap_ entry points
devmap_access() function, devmap_unload() Entry Point
devmap_contextmgt()function, devmap_contextmgt() Entry Point
devmap_dup() function, devmap_dup() Entry Point
devmap() function, The devmap(9E) Entry Point
devmap_map() function, devmap_map() Entry Point
devmap_unmap() function, devmap_unmap() Entry Point
devmap_ functions
devmap_devmem_setup() function, Associating Device Memory With User Mappings
devmap_load() function, devmap_load() Entry Point
devmap_umem_setup() function, Exporting Kernel Memory to Applications
devmap_unload() function, devmap_unload() Entry Point
diagnosis engine, definition, What Is Predictive Self-Healing?
.dict dictionary files, Message IDs and Dictionary Files
disaster recovery, Recovering the Device Directory
disk
I/O controls, Disk ioctls
performance, Disk Performance
disk driver testing, Disk Drivers
DKI, See DDI/DKI
DL_CLDLS, DLPI symbols, Implemented DLPI Primitives
DL_ETHER
Ethernet V2 packet processing, Type DL_ETHER: Ethernet V2 and ISO 8802-3 (IEEE 802.3)
GLD support
Generic LAN Driver Overview
Type DL_ETHER: Ethernet V2 and ISO 8802-3 (IEEE 802.3)
ISO 8802-3 (IEEE 802.3) packet processing, Type DL_ETHER: Ethernet V2 and ISO 8802-3 (IEEE 802.3)
network statistics, Network Statistics
DL_FDDI
GLD support
Generic LAN Driver Overview
Types DL_TPR and DL_FDDI: SNAP Processing
SNAP processing, Types DL_TPR and DL_FDDI: SNAP Processing
DL_STYLE1, DLPI symbols, Implemented DLPI Primitives
DL_STYLE2, DLPI symbols, Implemented DLPI Primitives
DL_TPR
GLD support
Generic LAN Driver Overview
Types DL_TPR and DL_FDDI: SNAP Processing
Type DL_TPR: Source Routing
SNAP processing, Types DL_TPR and DL_FDDI: SNAP Processing
source routing, Type DL_TPR: Source Routing
DL_VERSION_2, DLPI symbols, Implemented DLPI Primitives
DLIOCRAW, ioctl() function, Implemented ioctl Functions
DLPI primitives, Implemented DLPI Primitives
DL_ATTACH_REQ
Style 1 and Style 2 DLPI Providers
Implemented DLPI Primitives
DL_BIND_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_DETACH_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_DISABMULTI_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_ENABMULTI_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_GET_STATISTICS_ACK
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_GET_STATISTICS_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
Network Statistics
DL_INFO_ACK, Implemented DLPI Primitives
DL_INFO_REQ, Implemented DLPI Primitives
DL_PHYS_ADDR_ACK, Implemented DLPI Primitives
DL_PHYS_ADDR_REQ, Implemented DLPI Primitives
DL_PROMISCOFF_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_PROMISCON_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_SET_PHYS_ADDR_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_UNATTACHED_REQ, Implemented DLPI Primitives
DL_UNBIND_REQ
Implemented DLPI Primitives
Implemented DLPI Primitives
DL_UNITDATA_IND, Implemented DLPI Primitives
DL_UNITDATA_REQ, Implemented DLPI Primitives
DLPI providers, Style 1 and Style 2 DLPI Providers
DLPI symbols
DL_CLDLS, Implemented DLPI Primitives
DL_STYLE1, Implemented DLPI Primitives
DL_STYLE2, Implemented DLPI Primitives
DL_VERSION_2, Implemented DLPI Primitives
DMA
buffer allocation, Allocating Private DMA Buffers
burst sizes, Determining Maximum Burst Sizes
callbacks, Canceling DMA Callbacks
cookie
DMA Model
DMA Software Components: Handles, Windows, and Cookies
freeing handle, Freeing the DMA Handle
freeing resources, Freeing the DMA Resources
handle
DMA Model
DMA Software Components: Handles, Windows, and Cookies
Allocating a DMA Handle
object, DMA Model
object locking, Object Locking
operations, DMA Operations
physical addresses, Types of Host Platform DMA
private buffer allocation, Allocating Private DMA Buffers
register structure, Device Register Structure
resource allocation, Allocating DMA Resources
restrictions, DMA Attributes
transfers
DMA Operations
DMA Transfers (Synchronous)
virtual addresses, Types of Host Platform DMA
windows
DMA Software Components: Handles, Windows, and Cookies
DMA Windows
DMA functions, Direct Memory Access (DMA) Functions
deprecated, Direct Memory Access (DMA) Functions
driver binding name, Binding a Driver to a Device
driver.conf files, See hardware configuration files
driver instances, Using Separate Device Driver Instances
driver module entry points, See entry points
drivers, requests from user applications, Threats From Top-Down Requests
drv_getparm() function, changes to, drv_getparm() Argument Changes
drv_usecwait(9F), Delays
DTrace
definition, DTrace for Dynamic Instrumentation
task queues, Task Queue DTrace SDT Probes
dump() entry point, block drivers, dump() Entry Point (Block Drivers)
DVMA
SBus slots supporting, Physical SBus Addresses
virtual addresses, Types of Host Platform DMA
dynamic memory allocation, Dynamic Memory Allocation
Previous Next