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 Queues
- interfaces
- Task Queue Interfaces
- Task 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 Emulator
- SPARC Platform Console Communication
- test modules, Setting Up Test Modules
- testing
- asynchronous communication drivers, Asynchronous Communication Drivers
- configurations, Configuration Testing
- console frame buffer drivers, Developing, Testing, and Debugging Console Frame Buffer Drivers
- DDI compliance, DDI/DKI Compliance Testing
- device drivers, Criteria for Testing Drivers
- disk drivers, Disk Drivers
- driver hardening test harness, Driver Hardening Test Harness
- functionality, Functionality Testing
- injecting hardware faults
- Driver Hardening Test Harness
- Testing the Driver
- installation and packaging, Installation and Packaging Testing
- network drivers, Network Drivers
- tape 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 Harness
- Testing the Driver
- Fault-Injection Process
- Using Scripts to Automate the Test Process
- Using Scripts to Automate the Test Process
- th_manage command
- Driver Hardening Test Harness
- Testing the Driver
- Fault-Injection Process
- third-party DMA
- Third-Party DMA
- Performing Third-Party DMA Transfers
- thread synchronization
- condition variables, Condition Variables in Thread Synchronization
- mutex_init, Setting Up Mutexes
- mutex locks, Mutual-Exclusion Locks
- per instance mutex
- attach() Entry Point
- attach() Entry Point
- readers/writer locks, Readers/Writer Locks
- threads
- interactions, Thread Interaction
- preemption of, Locking Primitives
- task 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 Instrumentation
- kstats, Kernel Statistics
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_ia USB interface association driver, Devices With Interface-Association Descriptors
- usb_mid USB multi-interface driver
- Devices With Multiple Interfaces
- Devices With Interface-Association Descriptors
- 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_ia USB interface association driver, Devices With Interface-Association Descriptors
- usb_mid USB multi-interface driver
- Devices With Multiple Interfaces
- Devices With Interface-Association Descriptors
- 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
|