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

Document Information

Preface

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

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

L

latent fault, definition of, Periodic Health Checks
layered driver handle, See LDI
Layered Driver Interface, See LDI
layered identifier, See LDI
ld command, Compiling and Linking the Driver
LDI, Layered Driver Interface (LDI)
definition, What Is the Kernel?
device access, Kernel Interfaces
device consumer, LDI Overview
device information, Kernel Interfaces
device layering, User Interfaces
device usage
Kernel Interfaces
User Interfaces
Print System Configuration Command Interfaces
Device User Command Interfaces
event notification interfaces, Receiving Asynchronous Device Event Notification
fuser command, Device User Command Interfaces
kernel device consumer, LDI Overview
layered driver, LDI Overview
layered driver handle
Layered Driver Handles – Target Devices
Driver Source File
layered identifier
Layered Identifiers – Kernel Device Consumers
Driver Source File
libdevinfo interfaces, User Interfaces
prtconf command, Print System Configuration Command Interfaces
target device
LDI Overview
Layered Driver Handles – Target Devices
LDI functions
ldi_add_event_handler() function, Receiving Asynchronous Device Event Notification
ldi_aread() function, Accessing Target Devices
ldi_awrite() function, Accessing Target Devices
ldi_close() function
Opening and Closing Target Devices
Driver Source File
ldi_devmap() function, Accessing Target Devices
ldi_dump() function, Accessing Target Devices
ldi_get_dev() function, Retrieving Target Device Information
ldi_get_devid() function, Retrieving Target Device Information
ldi_get_eventcookie() function, Receiving Asynchronous Device Event Notification
ldi_get_minor_name() function, Retrieving Target Device Information
ldi_get_otyp() function, Retrieving Target Device Information
ldi_get_size() function, Retrieving Target Device Information
ldi_getmsg() function, Accessing Target Devices
ldi_ident_from_dev() function
Layered Identifiers – Kernel Device Consumers
Driver Source File
ldi_ident_from_dip() function, Layered Identifiers – Kernel Device Consumers
ldi_ident_from_stream() function, Layered Identifiers – Kernel Device Consumers
ldi_ident_release() function
Layered Identifiers – Kernel Device Consumers
Driver Source File
ldi_ioctl() function, Accessing Target Devices
ldi_open_by_dev() function, Opening and Closing Target Devices
ldi_open_by_devid() function, Opening and Closing Target Devices
ldi_open_by_name() function
Opening and Closing Target Devices
Driver Source File
ldi_poll() function, Accessing Target Devices
ldi_prop_exists() function, Retrieving Target Device Property Values
ldi_prop_get_int() function, Retrieving Target Device Property Values
ldi_prop_get_int64() function, Retrieving Target Device Property Values
ldi_prop_lookup_byte_array() function, Retrieving Target Device Property Values
ldi_prop_lookup_int_array() function, Retrieving Target Device Property Values
ldi_prop_lookup_int64_array() function, Retrieving Target Device Property Values
ldi_prop_lookup_string_array() function, Retrieving Target Device Property Values
ldi_prop_lookup_string() function, Retrieving Target Device Property Values
ldi_putmsg() function, Accessing Target Devices
ldi_read() function, Accessing Target Devices
ldi_remove_event_handler() function, Receiving Asynchronous Device Event Notification
ldi_strategy() function, Accessing Target Devices
ldi_write() function
Accessing Target Devices
Driver Source File
LDI types
ldi_callback_id_t, Receiving Asynchronous Device Event Notification
ldi_handle_t, Layered Driver Handles – Target Devices
ldi_ident_t, Layered Identifiers – Kernel Device Consumers
leaf devices, description of, Device Tree Components
leaf nodes, Fault Injection
legacy interrupts
defined, Device Interrupts
using, Legacy Interrupts
length argument, ddi_dma_mem_alloc(), changes to, ddi_dma_mem_alloc() Argument Changes
libdevinfo(), displaying the device tree, libdevinfo Library
libdevinfo device information library, User Interfaces
linking drivers, Compiling and Linking the Driver
lint command, 64-bit environment, General Conversion Steps
list suspect, definition, Diagnosis, Suspect Lists, and Fault Events
lnode, Device Information Library Interfaces
loadable module functions, Module Functions
loading drivers, Compiling and Linking the Driver
add_drv command, Installing Drivers with add_drv
hardware configuration file, Writing a Hardware Configuration File
loading modules
Loadable Module Entry Points
Copying the Driver to a Module Directory
loading test modules, Loading and Unloading Test Modules
locking primitives, types of, Locking Primitives
locks
manipulating, Kernel Thread Control and Synchronization Functions
mutex, Mutual-Exclusion Locks
readers/writer, Readers/Writer Locks
scheme for, Choosing a Locking Scheme
LP64
use in devmap(), Data Sharing in devmap()
use in ioctl(), Data Sharing in ioctl()
lso_basic_tcp_ipv4() structure, Large Segment (or Send) Offload
LUN bits, Building a Command