JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Writing Device Drivers     Oracle Solaris 11.1 Information Library
search filter icon
search icon

Document Information

Preface

Part I Designing Device Drivers for the Oracle Solaris Platform

1.  Overview of Oracle Solaris Device Drivers

2.  Oracle 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 Oracle 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

21.  SR-IOV Drivers

Part III Building a Device Driver

22.  Compiling, Loading, Packaging, and Testing Drivers

23.  Debugging, Testing, and Tuning Device Drivers

24.  Recommended Coding Practices

Part IV Appendixes

A.  Hardware Overview

B.  Summary of Oracle Solaris DDI/DKI Services

C.  Making a Device Driver 64-Bit Ready

D.  Console Frame Buffer Drivers

E.  pci.conf File

Index

Numbers and Symbols

A

B

C

D

E

F

G

H

I

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

I

I/O
asynchronous data transfers
index iconDifferences Between Synchronous and Asynchronous I/O
index iconAsynchronous Data Transfers (Block Drivers)
byte stream, index iconEntry Points for Character Device Drivers
disk controls, index iconDisk ioctls
DMA transfers, index iconDMA Transfers (Synchronous)
file system structure, index iconFile I/O
miscellaneous control of, index iconMiscellaneous I/O Control
multiplexing, index iconMultiplexing I/O on File Descriptors
polled I/O interfaces
index iconPolled I/O Interfaces
index iconImplementing Polled I/O in Console Frame Buffer Drivers
programmed transfers, index iconProgrammed I/O Transfers
scatter/gather structures, index iconVectored I/O
synchronous data transfers
index iconDifferences Between Synchronous and Asynchronous I/O
index iconSynchronous Data Transfers (Block Drivers)
visual I/O interfaces, index iconConsole Visual I/O Interfaces
IEEE 802.3, index iconEthernet V2 and ISO 8802-3 (IEEE 802.3)
IEEE 802.5, index iconTPR and FDDI: SNAP Processing
ILP32
use in devmap(), index iconData Sharing in devmap()
use in ioctl(), index iconData Sharing in ioctl()
use in mmap(), index iconData Sharing in mmap()
ILP64, use in mmap(), index iconData Sharing in mmap()
_info() entry point
example of, index icon_info() Example
required implementation, index iconLoadable Module Entry Points
_init() entry point
network drivers, index iconGLDv3 MAC Registration Functions
example of, index icon_init() Example
required implementation, index iconLoadable Module Entry Points
instance numbers, index iconDevice Instances and Instance Numbers
interface association nodes, index iconDevices With Interface-Association Descriptors
internal mode registers, index iconInternal Sequencing Logic
internal sequencing logic, index iconInternal Sequencing Logic
interrupt functions, index iconInterrupt Functions
interrupt handlers
functionality, index iconInterrupt Handler Functionality
registering, index iconRegistering Interrupts
interrupt handling, index iconInterrupt Handlers
callback handler function, index iconCallback Interfaces
clearing masks, index iconInterrupt Function Examples
ddi_cb_register() function, index iconCallback Interfaces
ddi_cb_unregister() function, index iconCallback Interfaces
ddi_intr_add_handler() function
index iconMSI-X Interrupts
index iconInterrupt Initialization and Destruction Functions
index iconRegistering Interrupts
ddi_intr_add_softint() function, index iconSoft Interrupt Functions
ddi_intr_alloc() function
index iconMSI-X Interrupts
index iconInterrupt Initialization and Destruction Functions
index iconInterrupt Request Interfaces
ddi_intr_block_disable() function, index iconInterrupt Initialization and Destruction Functions
ddi_intr_block_enable() function, index iconInterrupt Initialization and Destruction Functions
ddi_intr_clr_mask() function
index iconInterrupt Initialization and Destruction Functions
index iconInterrupt Function Examples
ddi_intr_disable() function
index iconMSI-X Interrupts
index iconInterrupt Initialization and Destruction Functions
ddi_intr_dup_handler() function
index iconMSI-X Interrupts
index iconInterrupt Initialization and Destruction Functions
ddi_intr_enable() function
index iconMSI-X Interrupts
index iconInterrupt Initialization and Destruction Functions
ddi_intr_free() function
index iconMSI-X Interrupts
index iconInterrupt Initialization and Destruction Functions
ddi_intr_get_cap() function, index iconInterrupt Capability Functions
ddi_intr_get_hilevel_pri() function
index iconPriority Management Functions
index iconHandling High-Level Interrupts
ddi_intr_get_navail() function, index iconInterrupt Capability Functions
ddi_intr_get_nintrs() function, index iconInterrupt Capability Functions
ddi_intr_get_pending() function
index iconInterrupt Initialization and Destruction Functions
index iconInterrupt Function Examples
ddi_intr_get_pri() function
index iconPriority Management Functions
index iconHandling High-Level Interrupts
ddi_intr_get_softint_pri() function, index iconSoft Interrupt Functions
ddi_intr_get_supported_types() function, index iconInterrupt Capability Functions
ddi_intr_hilevel() function, index iconHigh-Level Interrupts
ddi_intr_remove_handler() function
index iconMSI-X Interrupts
index iconInterrupt Initialization and Destruction Functions
ddi_intr_remove_softint() function, index iconSoft Interrupt Functions
ddi_intr_set_cap() function, index iconInterrupt Initialization and Destruction Functions
ddi_intr_set_mask() function
index iconInterrupt Initialization and Destruction Functions
index iconInterrupt Function Examples
ddi_intr_set_nreq() function, index iconInterrupt Request Interfaces
ddi_intr_set_pri() function, index iconPriority Management Functions
ddi_intr_set_softint_pri() function
index iconSoft Interrupt Functions
index iconInterrupt Function Examples
ddi_intr_trigger_softint() function
index iconHigh-Level Interrupts
index iconSoft Interrupt Functions
gld_intr() function, index icongld_intr() Function
high-level interrupts
index iconHigh-Level Interrupts
index iconSoftware Interrupts
index iconHandling High-Level Interrupts
overview, index iconInterrupt Handling
pending interrupts, index iconInterrupt Function Examples
setting masks, index iconInterrupt Function Examples
software interrupts
index iconSoftware Interrupts
index iconInterrupt Function Examples
index iconHandling High-Level Interrupts
interrupt property, definition, index iconInterrupt Handling
Interrupt Resource Management, index iconInterrupt Resource Management
interrupts
allocating, index iconInterrupt Request Interfaces
callback support, index iconCallback Interfaces
capability functions, index iconInterrupt Capability Functions
changing soft interrupt priority example, index iconInterrupt Function Examples
checking pending interrupts example, index iconInterrupt Function Examples
clearing interrupt masks example, index iconInterrupt Function Examples
common problems with, index iconInterrupt Issues
description of, index iconInterrupt Handler Overview
handling high-level interrupts examples, index iconHigh-Level Interrupt Handling Example
handling low-level interrupts example, index iconHigh-Level Interrupt Handling Example
high-level mutexes, index iconHigh-Level Mutexes
initialization and destruction functions, index iconInterrupt Initialization and Destruction Functions
interrupt handling example, index iconInterrupt Handler Functionality
legacy defined, index iconDevice Interrupts
message-signaled defined, index iconDevice Interrupts
MSI defined, index iconDevice Interrupts
MSI implementation, index iconMSI Interrupts
MSI-X defined, index iconDevice Interrupts
MSI-X implementation, index iconMSI-X Interrupts
network drivers, index iconGLDv2 Driver Requirements
priority levels, index iconHigh-Level Interrupts
priority management functions, index iconPriority Management Functions
registering legacy interrupt example, index iconRegistering Legacy Interrupts
registering legacy interrupts, index iconRegistering Legacy Interrupts
registering MSI interrupts, index iconRegistering MSI Interrupts
registering MSI interrupts example, index iconRegistering MSI Interrupts
removing legacy interrupt example, index iconRegistering Legacy Interrupts
removing MSI interrupts example, index iconRegistering MSI Interrupts
requesting, index iconInterrupt Request Interfaces
setting interrupt masks example, index iconInterrupt Function Examples
soft interrupt functions, index iconSoft Interrupt Functions
software interrupts, index iconHandling High-Level Interrupts
types of, index iconDevice Interrupts
using legacy, index iconLegacy Interrupts
writing handlers, index iconInterrupt Handlers
ioctl(9E) driver entry point, index iconSPARC Platform Console Communication
ioctl() function
character drivers, index iconioctl() Entry Point (Character Drivers)
commands, index iconWell Known ioctl Interfaces
DLIOCRAW, index iconGLDv2 I/O Control Functions
iovec structure, index iconVectored I/O
IRM, See Interrupt Resource Management
ISO 8802-3, index iconEthernet V2 and ISO 8802-3 (IEEE 802.3)
ISO 9314-2, index iconTPR and FDDI: SNAP Processing
ISR (interrupt service routine), index iconInterrupt Handler Functionality