| 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 |       	 
             T
tagged queuing, Support for Queuing 
tape drivers, testing, Testing Specific Types of Drivers 
task queues, Queueing Tasks
definition, Introduction to Task Queuesinterfaces
Task Queue InterfacesTask Queue Management Functions 
tem (terminal emulator module), x86 Platform Console Communication
See also kernel terminal emulator 
tem-support DDI property
Solaris Consoles and the Kernel Terminal EmulatorSPARC Platform Console Communication 
test modules, Setting Up Test Modules 
testing
asynchronous communication drivers, Asynchronous Communication Driversconfigurations, Configuration Testingconsole frame buffer drivers, Developing, Testing, and Debugging Console Frame Buffer DriversDDI compliance, DDI/DKI Compliance Testingdevice drivers, Criteria for Testing Driversdisk drivers, Disk Driversdriver hardening test harness, Driver Hardening Test Harnessfunctionality, Functionality Testinginjecting hardware faults
Driver Hardening Test HarnessTesting the Driverinstallation and packaging, Installation and Packaging Testingnetwork drivers, Network Driverstape drivers, Tape Drivers 
testing debuggers, avoiding data loss, Avoiding Data Loss on a Test System 
testing device drivers, Testing Drivers 
th_define command
Driver Hardening Test HarnessTesting the DriverFault-Injection ProcessUsing Scripts to Automate the Test ProcessUsing Scripts to Automate the Test Process 
th_manage command
Driver Hardening Test HarnessTesting the DriverFault-Injection Process 
third-party DMA
Third-Party DMAPerforming Third-Party DMA Transfers 
thread synchronization
condition variables, Condition Variables in Thread Synchronizationmutex_init, Setting Up Mutexesmutex locks, Mutual-Exclusion Locksper instance mutex
attach() Entry Pointattach() Entry Pointreaders/writer locks, Readers/Writer Locks 
threads
interactions, Thread Interactionpreemption of, Locking Primitivestask queues, Queueing Tasks 
ticks argument, delay(), changes to, delay() and timeout() Argument Changes 
ticks argument, timeout(), changes to, delay() and timeout() Argument Changes 
time-related functions, Time-Related Functions
deprecated, Time-Related Functions 
timeout argument, cv_timedwait(), changes to, cv_timedwait() and cv_timedwait_sig() Argument Changes 
timeout() function, delay() and timeout() Argument Changes
changes to, delay() and timeout() Argument Changes 
tip connection, Testing With a Serial Connection 
total store ordering, Total Store Ordering (TSO) 
tran_abort() entry point, SCSI HBA drivers, tran_abort() Entry Point 
tran_destroy_pkt() entry point, SCSI HBA drivers, tran_destroy_pkt() Entry Point 
tran_dmafree() entry point, SCSI HBA drivers, tran_dmafree() Entry Point 
tran_getcap() entry point, SCSI HBA drivers, tran_getcap() Entry Point 
tran_init_pkt() entry point, SCSI HBA drivers, tran_init_pkt() Entry Point 
tran_reset() entry point, SCSI HBA drivers, tran_reset() Entry Point 
tran_reset_notify() entry point, SCSI HBA drivers, tran_reset_notify() Entry Point 
tran_setcap() entry point, SCSI HBA drivers, tran_setcap() Entry Point 
tran_start() entry point, SCSI HBA drivers, tran_start() Entry Point 
tran_sync_pkt() entry point, SCSI HBA drivers, tran_sync_pkt() Entry Point 
tuning device drivers, Tuning Drivers
DTrace, DTrace for Dynamic Instrumentationkstats, Kernel Statistics U
UHCI (Universal Host Controller Interface), USB Client Drivers 
uiomove() example, Programmed I/O Transfers 
uiomove() function
changes to, uiomove() Argument Changesexample 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 DriverChecking Device Driver Bindings 
description of, Updating Driver Information 
USB device
alternate settings, How USB Devices Appear to the Systemcompatible device names, Compatible Device Namescomposite
Devices With Multiple InterfacesManaging Entire Devicesconfiguration descriptors, The Descriptor Treecurrent configuration, How USB Devices Appear to the Systemendpoints, How USB Devices Appear to the System
hotplugging, Hotplugging USB Devicesbulk, USB Endpointscontrol, USB Endpointsdefault, The Default Pipeinterrupt, USB Endpointsisochronous, USB Endpoints 
interface number, Getting Interface Numberscallbacks, Hotplug Callbacksinsertion, Hot Insertionreinsertion, Hot Reinsertionremoval, Hot Removalinterfaces, How USB Devices Appear to the Systemmultiple configurations, How USB Devices Appear to the Systempower management, Power Management
remote wakeup, Device Power Managementactive, Device Power Managementdevice, Device Power Managementpassive, Device Power Managementsystem, System Power Managementsplitting interfaces
Devices With Multiple InterfacesMultiple-Configuration Devicesstates, Device State Management 
USB drivers, USB Client Drivers
asynchronous transfer callbacks, Synchronous and Asynchronous Transfers and Callbacksbulk data transfer requests, Requestscontrol data transfer requests, Requestsdata transfer
data transfer requests, Requestscallback status flags
Synchronous and Asynchronous Transfers and CallbacksRequestscompletion reasons
Synchronous and Asynchronous Transfers and CallbacksRequestsdescriptor tree
The Descriptor TreeRegistering Drivers to Gain Device Accessevent notification, Hotplug Callbackshubd USB hub driver, Hot Insertioninterfaces, USB Client Driversinterrupt data transfer requests, Requestsisochronous data transfer requests, Requestsmessage blocks, Requestsmutex initialization, Registering Drivers to Gain Device Accesspipes
How USB Devices Appear to the SystemRegistering Drivers to Gain Device AccessDevice Communication 
registering, Registering Drivers to Gain Device Accessclosing, Closing Pipesdefault control
Before the Client Driver Is AttachedRegistering Drivers to Gain Device AccessThe Default Pipeflushing, Flushing Pipesopening, Opening Pipesregistering for events, Hotplug Callbacksset alternate, Modifying or Getting the Alternate Settingset configuration, Multiple-Configuration Devicessynchronous control requests, Requestsusb_ia USB interface association driver, Devices With Interface-Association Descriptorsusb_mid USB multi-interface driver
Devices With Multiple InterfacesDevices With Interface-Association DescriptorsHot RemovalGetting Interface Numbersversioning, Registering Drivers to Gain Device Access 
USB functions
cfgadm_usb command, Multiple-Configuration Devicesusb_alloc_bulk_req() function, Requestsusb_alloc_ctrl_req() function, Requestsusb_alloc_intr_req() function, Requestsusb_alloc_isoc_req() function, Requestsusb_client_attach() function, Registering Drivers to Gain Device Accessusb_client_detach() function, Registering Drivers to Gain Device Accessusb_clr_feature() function, Clearing a USB Conditionusb_create_pm_components() function
Device Power ManagementDevice Power Managementusb_free_bulk_req() function, Requestsusb_free_ctrl_req() function, Requestsusb_free_descr_tree() function, Registering Drivers to Gain Device Accessusb_free_dev_data() function, Registering Drivers to Gain Device Accessusb_free_intr_req() function, Requestsusb_free_isoc_req() function, Requestsusb_get_addr() function, Getting the Bus Address of a Deviceusb_get_alt_if() function, Modifying or Getting the Alternate Settingusb_get_cfg() function, Multiple-Configuration Devicesusb_get_current_frame_number() function, Requestsusb_get_dev_data() function
The Descriptor TreeRegistering Drivers to Gain Device AccessRegistering Drivers to Gain Device AccessThe Default Pipeusb_get_if_number() function, Getting Interface Numbersusb_get_max_pkts_per_isoc_request() function, Requestsusb_get_status() function, Getting Device, Interface, or Endpoint Statususb_get_string_descr() function, Retrieving a String Descriptorusb_handle_remote_wakeup() function
Device Power ManagementDevice Power Managementusb_lookup_ep_data() function
The Descriptor TreeOpening Pipesusb_owns_device() function, Managing Entire Devicesusb_parse_data() function, The Descriptor Treeusb_pipe_bulk_xfer() function
Data TransferRequestsusb_pipe_close() function
Closing PipesRequestsusb_pipe_ctrl_xfer() function
Data TransferRequestsusb_pipe_ctrl_xfer_wait() function
RequestsRequestsusb_pipe_drain_reqs() function, Flushing Pipesusb_pipe_get_max_bulk_transfer_ size() function, Requestsusb_pipe_get_private() function, Pipe Private Data Facilityusb_pipe_get_state() function
Pipe StatesFlushing Pipesusb_pipe_intr_xfer() function
Data TransferRequestsRequestsusb_pipe_isoc_xfer() function
Data TransferRequestsusb_pipe_open() function
Opening PipesSynchronous and Asynchronous Transfers and Callbacksusb_pipe_reset() function
Pipe StatesFlushing Pipesusb_pipe_set_private() function, Pipe Private Data Facilityusb_pipe_stop_intr_polling() function
RequestsRequestsusb_pipe_stop_isoc_polling() function
RequestsRequestsusb_print_descr_tree() function, Registering Drivers to Gain Device Accessusb_register_hotplug_cbs() function, Hotplug Callbacksusb_set_alt_if() function, Modifying or Getting the Alternate Settingusb_set_cfg() function, Multiple-Configuration Devicesusb_unregister_hotplug_cbs() function, Hotplug Callbacks 
usb_ia USB interface association driver, Devices With Interface-Association Descriptors 
usb_mid USB multi-interface driver
Devices With Multiple InterfacesDevices With Interface-Association DescriptorsHot RemovalGetting Interface Numbers 
USB structures
usb_alloc_intr_request, Requestsusb_bulk_request
RequestsRequestsusb_callback_flags
Synchronous and Asynchronous Transfers and CallbacksRequestsusb_completion_reason
Synchronous and Asynchronous Transfers and CallbacksRequestsusb_ctrl_request
RequestsRequestsusb_intr_request, Requestsusb_isoc_request
RequestsRequestsusb_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 Functionstable, 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 |