JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Writing Device Drivers
search filter icon
search icon

Document Information


Part I Designing Device Drivers for the Solaris Platform

1.  Overview of Solaris Device Drivers

2.  Solaris Kernel and Device Tree

3.  Multithreading

4.  Properties

5.  Managing Events and Queueing Tasks

6.  Driver Autoconfiguration

7.  Device Access: Programmed I/O

8.  Interrupt Handlers

9.  Direct Memory Access (DMA)

10.  Mapping Device and Kernel Memory

11.  Device Context Management

12.  Power Management

13.  Hardening Solaris Drivers

14.  Layered Driver Interface (LDI)

Part II Designing Specific Kinds of Device Drivers

15.  Drivers for Character Devices

16.  Drivers for Block Devices

17.  SCSI Target Drivers

18.  SCSI Host Bus Adapter Drivers

19.  Drivers for Network Devices

20.  USB Drivers

Part III Building a Device Driver

21.  Compiling, Loading, Packaging, and Testing Drivers

22.  Debugging, Testing, and Tuning Device Drivers

23.  Recommended Coding Practices

Part IV Appendixes

A.  Hardware Overview

B.  Summary of Solaris DDI/DKI Services

C.  Making a Device Driver 64-Bit Ready

D.  Console Frame Buffer Drivers


Numbers and Symbols

























packaging, Driver Packaging
partial store ordering, Partial Store Ordering (PSO)
PCI bus, PCI Local Bus
configuration address space, PCI Configuration Address Space
configuration base address registers, PCI Configuration Base Address Registers
hardware configuration files, PCI Hardware Configuration Files
I/O address space, PCI I/O Address Space
memory address space, PCI Memory Address Space
PCI configuration functions, alternate access mechanisms, Programmed I/O Functions
PCI devices, PCI Local Bus
PCI dual address cycles, DMA Isolation
pci_ereport_post() function
Reporting Errors
Registering an Error Handler
Fault Management Data and Status Structure
pci_ereport_setup() function
Declaring Fault Management Capabilities
Reporting Errors
pci_ereport_teardown() function
Cleaning Up Fault Management Resources
Reporting Errors
physical DMA, Types of Host Platform DMA
physio() function, description of, DMA Transfers (Synchronous)
pipe, alternate setting, Modifying or Getting the Alternate Setting
closing, Closing Pipes
default control
Registering Drivers to Gain Device Access
The Default Pipe
flushing, Flushing Pipes
mutex initialization, Registering Drivers to Gain Device Access
opening, Opening Pipes
policy, Synchronous and Asynchronous Transfers and Callbacks
USB device communication, Device Communication
USB devices, How USB Devices Appear to the System
use before attach(), Before the Client Driver Is Attached
pixel depth mode, Solaris Consoles and the Kernel Terminal Emulator
pkgadd command, Installing the Test Harness
pm_busy_component() function
Device Power Management
Device Power Management
pm_idle_component() function
Device Power Management
Device Power Management
pm_lower_power() function, Device Power Management
pm_raise_power() function
Device Power Management
Device Power Management
.po message files, Message IDs and Dictionary Files
polled I/O interfaces
Polled I/O Interfaces
Implementing Polled I/O in Console Frame Buffer Drivers
postmortem debugging, Postmortem Debugging
power.conf file, See /etc/power.conf file
power cycle, Device Power State Transitions
power() entry point
Device Power Management
Device Power Management
power management
See also device power management
See also system power management
flow of control, Power Management Flow of Control
USB devices, Power Management
power management functions, Power Management Functions
deprecated, Power Management Functions
Predictive Self-Healing, What Is Predictive Self-Healing?
See also fault management
unique prefix for driver symbols
What Is a Device Driver Entry Point?
Use a Unique Prefix to Avoid Kernel Symbol Collisions
print() entry point, block drivers, print() Entry Point (Block Drivers)
printing functions, Kernel Logging and Printing Functions
printing messages, Returning Errors
probe() entry point
description of, probe() Entry Point
SCSI target drivers, probe() Entry Point (SCSI Target Drivers)
processor issues
SPARC Processor Issues
SPARC Register Windows
SPARC Multiply and Divide Instructions
x86, x86 Processor Issues
programmed I/O, Programmed I/O Transfers
use with DDI access routines, Exclusive Use of DDI Access Handles
programmed I/O functions, Programmed I/O Functions
deprecated, Programmed I/O Functions
PROM commands, Open Boot PROM 3
prop_op() entry point, description of, prop_op() Entry Point
class property, Hardware Configuration File
ddi_prop_op, prop_op() Entry Point
device node name property, Binding a Driver to a Device
LDI, Retrieving Target Device Property Values
nblocks property, Block Device Autoconfiguration
Nblocks property, Block Device Autoconfiguration
nblocks property, Device Sizes
Nblocks property, Device Sizes
no-involuntary-power-cycles, Device Power State Transitions
Device Properties
Device Properties
pm-hardware-state property
Hardware State
attach() Entry Point
attach() Entry Point (SCSI Target Drivers)
prtconf, Looking Up Properties
reg property, Hardware State
removable-media, Power Management Dependencies
reporting device properties, prop_op() Entry Point
SCSI HBA properties, HBA Configuration Properties
SCSI target driver, x86 Target Driver Configuration Properties
size property, Character Device Autoconfiguration
types of, Device Properties
property functions, Property Functions
prtconf command
displaying device names, Compatible Device Names
displaying interfaces, Devices With Multiple Interfaces
displaying kernel device usage information, Print System Configuration Command Interfaces
displaying properties, Looking Up Properties
displaying the bound driver, Compatible Device Names
displaying the device tree, prtconf Command
pseudo device driver, What Is a Device Driver?
putnext() function, Thread Interaction