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

























S_IFCHR, Creating Minor Device Nodes
SAP (Service Access Point), Ethernet V2 and ISO 8802-3 (IEEE 802.3)
saving crash dumps, Capture System Crash Dumps
address bits, Physical SBus Addresses
geographical addressing, SBus
hardware configuration files, SBus Hardware Configuration Files
physical address space, SBus Physical Address Space
slots supporting DVMA, Physical SBus Addresses
DMA engines, DMA Software Components: Handles, Windows, and Cookies
I/O, Vectored I/O
scheduling tasks, Queueing Tasks
Introduction to Target Drivers
SCSI Interface
global data definitions, SCSI Options
HBA transport layer, SCSI Interface
interfaces, SCSA HBA Entry Point Summary
architecture, Sun Common SCSI Architecture Overview
bus, Introduction to Target Drivers
scsi_ functions
scsi_alloc_consistent_buf()function, scsi_alloc_consistent_buf() Function
scsi_destroy_pkt() function, scsi_destroy_pkt() Function
scsi_dmafree() function, Reuse of Packets
scsi_free_consistent_buf() function, scsi_free_consistent_buf() Function
scsi_ifgetcap() function, Setting Target Capabilities
scsi_ifsetcap() function, Setting Target Capabilities
scsi_init_pkt() function, scsi_init_pkt() Function
scsi_probe() function, tran_tgt_probe() Entry Point
scsi_setup_cdb() function, Building a Command
scsi_sync_pkt() function
scsi_sync_pkt() Function
Reuse of Packets
scsi_transport() function, Transporting a Command
scsi_unprobe() function, tran_tgt_probe() Entry Point
summary, SCSA Functions
scsi_ structures
scsi_address structure, scsi_address Structure
scsi_device structure, scsi_device Structure
scsi_hba_tran structure, scsi_hba_tran() Structure
scsi_pkt structure, scsi_pkt Structure (HBA)
scsi_alloc_consistent_buf() function, changes to, scsi_alloc_consistent_buf() Argument Changes
scsi_device structure, scsi_device Structure
SCSI functions, SCSI Functions
deprecated, SCSI Functions
scsi_hba_ functions
scsi_hba_attach_setup() function, HBA Configuration Properties
scsi_hba_lookup_capstr() function, tran_getcap() Entry Point
scsi_hba_pkt_alloc() function, Allocation and Initialization of a scsi_pkt(9S) Structure
scsi_hba_ functions, scsi_hba_pkt_free() function, tran_destroy_pkt() Entry Point
scsi_hba_ functions
scsi_hba_probe() function, tran_tgt_probe() Entry Point
summary list, SCSA HBA Functions
SCSI HBA driver
abort and reset management, tran_abort() Entry Point
autoconfiguration, Autoconfiguration Entry Points
capability management, tran_getcap() Entry Point
cloning, Transport Structure Cloning
command state structure, Per-Command Structure
command timeout, Timeout Handler
command transport, Command Transport
configuration properties, HBA Configuration Properties
data structures, SCSA HBA Data Structures
DMA resources, Allocation of DMA Resources
driver instance initialization, tran_tgt_init() Entry Point
entry points summary, SCSA HBA Entry Point Summary
header files, Declarations and Structures
and hotplugging
Dynamic Reconfiguration
initializing a transport structure, attach() Entry Point (SCSI HBA Drivers)
installation, SCSI HBA Driver Specific Issues
interrupt handling, Interrupt Handler and Command Completion
SCSI Interface
SCSI Interface
properties, x86 Target Driver Configuration Properties
resource allocation, tran_init_pkt() Entry Point
SCSI HBA driver entry points
by category, Entry Points for SCSA HBA Drivers
tran_abort() function, tran_abort() Entry Point
tran_dmafree() function, tran_dmafree() Entry Point
tran_getcap() function, tran_getcap() Entry Point
tran_init_pkt() function, tran_init_pkt() Entry Point
tran_reset() function, tran_reset() Entry Point
tran_reset_notify() function, tran_reset_notify() Entry Point
tran_setcap() function, tran_setcap() Entry Point
tran_start() function, tran_start() Entry Point
tran_sync_pkt() function, tran_sync_pkt() Entry Point
tran_tgt_free() function, tran_tgt_free() Entry Point
tran_tgt_init() function, tran_tgt_init() Entry Point
tran_tgt_probe() function, tran_tgt_probe() Entry Point
scsi_hba_tran structures, scsi_pkt structure, Per-Target Instance Data
scsi_pkt structure, scsi_pkt Structure (Target Drivers)
changes to, scsi_pkt Structure Changes
SCSI target driver
auto-request sense mode, Auto-Request Sense Mode
autoconfiguration of, Autoconfiguration for SCSI Target Drivers
building a command, Building a Command
callback routine, Command Completion
data structures, Declarations and Data Structures
initializing a command descriptor block, Building a Command
overview, Introduction to Target Drivers
Hardware Configuration File
attach() Entry Point (SCSI Target Drivers)
x86 Target Driver Configuration Properties
resource allocation, Resource Allocation
reusing packets, Reuse of Packets
SCSI routines, SCSA Functions
transporting a command, Transporting a Command
segmap() entry point
description of
The segmap(9E) Entry Point
Mapping Device Memory
driver notification, Associating User Mappings With Driver Notifications
self-identifying devices, Device Identification
serial connection, Testing With a Serial Connection
add new device, Serviceability
detect faulty device, Serviceability
perform periodic health checks, Serviceability
remove faulty device, Serviceability
report faults, Serviceability
single device node, USB Devices and the Solaris Device Tree
size property, Character Device Autoconfiguration
slice number for block devices, Block Device Autoconfiguration
SNAP (Sub-Net Access Protocol), TPR and FDDI: SNAP Processing
snoop command, network drivers, GLDv2 I/O Control Functions
snooping kernel variable, Enable the Deadman Feature to Avoid a Hard Hang
soft interrupts, Software Interrupts
soft state information
LDI, Driver Source File
retrieving in mdb, Retrieving Driver Soft State Information
USB, Registering Drivers to Gain Device Access
software interrupts, changing priority, Interrupt Function Examples
software state functions, Device Software State Functions
Solaris kernel, See kernel
source compatibility, description of, DDI/DKI Interfaces
source files for device drivers, Source Files
SPARC processor
byte ordering, SPARC Byte Ordering
data alignment, SPARC Data Alignment
floating point operations, SPARC Processor Issues
multiply and divide instructions, SPARC Multiply and Divide Instructions
register windows, SPARC Register Windows
structure member alignment, Member Alignment in SPARC Structures
special files, description of, Devices as Special Files
src_advcnt argument, ddi_device_copy(), changes to, ddi_device_copy() Argument Changes
standalone mode
Console Visual I/O Interfaces
Implementing Polled I/O in Console Frame Buffer Drivers
state structure
Software State Management
Driver Soft-State Management
Driver Source File
storage classes, driver data, Storage Classes of Driver Data
store buffers, Store Buffers
strategy() entry point
block drivers, strategy() Entry Point
character drivers, strategy() Entry Point
streaming access, Allocating Private DMA Buffers
See network drivers, GLDv2
cb_ops structure, cb_ops Structure
drivers, Entry Points for STREAMS Device Drivers
stale pointers, Thread Interaction
Sun Studio, Compiling and Linking the Driver
suspect list, definition, Diagnosis, Suspect Lists, and Fault Events
synchronous data transfers
block drivers, Synchronous Data Transfers (Block Drivers)
character drivers, Differences Between Synchronous and Asynchronous I/O
USB, Synchronous and Asynchronous Transfers and Callbacks
system calls, What Is the Kernel?
system global state functions, System Global State
system power management
description of, System Power Management
entry points, Entry Points Used by System Power Management
model, System Power Management Model
policy, Automatic Power Management for Systems
saving hardware state, Hardware State
USB devices, System Power Management
system registers, reading and writing, Exploring System Registers With kmdb