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

U

UHCI (Universal Host Controller Interface), USB Client Drivers
uiomove() example, Programmed I/O Transfers
uiomove() function
changes to, uiomove() Argument Changes
example of, Programmed I/O Transfers
unloading drivers, Loading and Unloading Drivers
unloading test modules, Loading and Unloading Test Modules
untagged queuing, Support for Queuing
update_drv command
Test the Layered Driver
Checking Device Driver Bindings
description of, Updating Driver Information
USB device
alternate settings, How USB Devices Appear to the System
compatible device names, Compatible Device Names
composite
Devices With Multiple Interfaces
Managing Entire Devices
configuration descriptors, The Descriptor Tree
current configuration, How USB Devices Appear to the System
endpoints, How USB Devices Appear to the System
bulk, USB Endpoints
control, USB Endpoints
default, The Default Pipe
interrupt, USB Endpoints
isochronous, USB Endpoints
hotplugging, Hotplugging USB Devices
callbacks, Hotplug Callbacks
insertion, Hot Insertion
reinsertion, Hot Reinsertion
removal, Hot Removal
interface number, Getting Interface Numbers
interfaces, How USB Devices Appear to the System
multiple configurations, How USB Devices Appear to the System
power management, Power Management
active, Device Power Management
device, Device Power Management
passive, Device Power Management
system, System Power Management
remote wakeup, Device Power Management
splitting interfaces
Devices With Multiple Interfaces
Multiple-Configuration Devices
states, Device State Management
USB drivers, USB Client Drivers
asynchronous transfer callbacks, Synchronous and Asynchronous Transfers and Callbacks
bulk data transfer requests, Requests
control data transfer requests, Requests
data transfer
callback status flags
Synchronous and Asynchronous Transfers and Callbacks
Requests
completion reasons
Synchronous and Asynchronous Transfers and Callbacks
Requests
data transfer requests, Requests
descriptor tree
The Descriptor Tree
Registering Drivers to Gain Device Access
event notification, Hotplug Callbacks
hubd USB hub driver, Hot Insertion
interfaces, USB Client Drivers
interrupt data transfer requests, Requests
isochronous data transfer requests, Requests
message blocks, Requests
mutex initialization, Registering Drivers to Gain Device Access
pipes
How USB Devices Appear to the System
Registering Drivers to Gain Device Access
Device Communication
closing, Closing Pipes
default control
Before the Client Driver Is Attached
Registering Drivers to Gain Device Access
The Default Pipe
flushing, Flushing Pipes
opening, Opening Pipes
registering, Registering Drivers to Gain Device Access
registering for events, Hotplug Callbacks
set alternate, Modifying or Getting the Alternate Setting
set configuration, Multiple-Configuration Devices
synchronous control requests, Requests
usb_mid USB multi-interface driver
Devices With Multiple Interfaces
Hot Removal
Getting Interface Numbers
versioning, Registering Drivers to Gain Device Access
USB functions
cfgadm_usb command, Multiple-Configuration Devices
usb_alloc_bulk_req() function, Requests
usb_alloc_ctrl_req() function, Requests
usb_alloc_intr_req() function, Requests
usb_alloc_isoc_req() function, Requests
usb_client_attach() function, Registering Drivers to Gain Device Access
usb_client_detach() function, Registering Drivers to Gain Device Access
usb_clr_feature() function, Clearing a USB Condition
usb_create_pm_components() function
Device Power Management
Device Power Management
usb_free_bulk_req() function, Requests
usb_free_ctrl_req() function, Requests
usb_free_descr_tree() function, Registering Drivers to Gain Device Access
usb_free_dev_data() function, Registering Drivers to Gain Device Access
usb_free_intr_req() function, Requests
usb_free_isoc_req() function, Requests
usb_get_addr() function, Getting the Bus Address of a Device
usb_get_alt_if() function, Modifying or Getting the Alternate Setting
usb_get_cfg() function, Multiple-Configuration Devices
usb_get_current_frame_number() function, Requests
usb_get_dev_data() function
The Descriptor Tree
Registering Drivers to Gain Device Access
Registering Drivers to Gain Device Access
The Default Pipe
usb_get_if_number() function, Getting Interface Numbers
usb_get_max_pkts_per_isoc_request() function, Requests
usb_get_status() function, Getting Device, Interface, or Endpoint Status
usb_get_string_descr() function, Retrieving a String Descriptor
usb_handle_remote_wakeup() function
Device Power Management
Device Power Management
usb_lookup_ep_data() function
The Descriptor Tree
Opening Pipes
usb_owns_device() function, Managing Entire Devices
usb_parse_data() function, The Descriptor Tree
usb_pipe_bulk_xfer() function
Data Transfer
Requests
usb_pipe_close() function
Closing Pipes
Requests
usb_pipe_ctrl_xfer() function
Data Transfer
Requests
usb_pipe_ctrl_xfer_wait() function
Requests
Requests
usb_pipe_drain_reqs() function, Flushing Pipes
usb_pipe_get_max_bulk_transfer_ size() function, Requests
usb_pipe_get_private() function, Pipe Private Data Facility
usb_pipe_get_state() function
Pipe States
Flushing Pipes
usb_pipe_intr_xfer() function
Data Transfer
Requests
Requests
usb_pipe_isoc_xfer() function
Data Transfer
Requests
usb_pipe_open() function
Opening Pipes
Synchronous and Asynchronous Transfers and Callbacks
usb_pipe_reset() function
Pipe States
Flushing Pipes
usb_pipe_set_private() function, Pipe Private Data Facility
usb_pipe_stop_intr_polling() function
Requests
Requests
usb_pipe_stop_isoc_polling() function
Requests
Requests
usb_print_descr_tree() function, Registering Drivers to Gain Device Access
usb_register_hotplug_cbs() function, Hotplug Callbacks
usb_set_alt_if() function, Modifying or Getting the Alternate Setting
usb_set_cfg() function, Multiple-Configuration Devices
usb_unregister_hotplug_cbs() function, Hotplug Callbacks
usb_mid USB multi-interface driver
Devices With Multiple Interfaces
Hot Removal
Getting Interface Numbers
USB structures
usb_alloc_intr_request, Requests
usb_bulk_request
Requests
Requests
usb_callback_flags
Synchronous and Asynchronous Transfers and Callbacks
Requests
usb_completion_reason
Synchronous and Asynchronous Transfers and Callbacks
Requests
usb_ctrl_request
Requests
Requests
usb_intr_request, Requests
usb_isoc_request
Requests
Requests
usb_request_attributes, Requests
USB 2.0 specification, USBA 2.0 Framework
USBA (Solaris USB Architecture), USB Drivers
USBA 2.0 framework, USB Drivers
user application kernel functions
deprecated, User Application Kernel and Device Access Functions
table, User Application Kernel and Device Access Functions
user applications, requests from, Threats From Top-Down Requests
user process event functions, User Process Event Functions
user process information functions, User Process Information Functions
deprecated, User Process Information Functions
user space access functions, User Space Access Functions
deprecated, User Space Access Functions
utility functions, table, Utility Functions