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
|
M
- M_ERROR, Thread Interaction
- major numbers
- description of, Devices as Special Files
- example of, Block Device Autoconfiguration
- makedevice() function, Block Device Autoconfiguration
- mapsize argument, rmallocmap(), changes to, rmallocmap() and rmallocmap_wait() Argument Changes
- mdb
- detecting kernel memory leaks, Detecting Kernel Memory Leaks
- writing commands, Writing Debugger Commands With mdb
- mdb debugger, Using the mdb Modular Debugger
- navigating device tree with, Obtaining Device Tree Information
- retrieving soft state information, Retrieving Driver Soft State Information
- running, Getting Started With the Modular Debugger
- memory allocation, description of, Dynamic Memory Allocation
- memory allocation functions
- Memory Allocation and Deallocation Functions
- Memory Allocation and Deallocation Functions
- deprecated, Memory Allocation and Deallocation Functions
- memory leaks, detecting with mdb, Detecting Kernel Memory Leaks
- memory management unit, description of, Virtual Memory
- memory mapping
- device context management of, Context Management Model
- device memory management
- Entry Points for Memory Mapped Devices
- Mapping Device and Kernel Memory
- Mapping Device Memory
- memory model
- SPARC, System Memory Model
- store buffers, Store Buffers
- message-signaled interrupts, defined, Device Interrupts
- minor device node, Creating Minor Device Nodes
- modifying permissions of, Updating Driver Information
- minor numbers, Devices as Special Files
- minphys() function, minphys() Entry Point
- bulk requests, Requests
- mmap() function, driver notification, Associating User Mappings With Driver Notifications
- moddebug kernel variable, Loading and Unloading Test Modules
- modinfo command
- Test the Layered Driver
- Loading and Unloading Test Modules
- modldrv structure, description of, modldrv Structure
- modlinkage structure, description of, modlinkage Structure
- modload command, Loading and Unloading Test Modules
- modular debugger, See mdb debugger
- module directory, Copying the Driver to a Module Directory
- module functions, Module Functions
- module_info structure, network drivers, GLD Driver Requirements
- modunload command, Loading and Unloading Test Modules
- description of, Loading and Unloading Drivers
- mount() function, block drivers, open() Entry Point (Block Drivers)
- msgb() structure
- Requests
- Requests
- MSI interrupts
- defined, Device Interrupts
- implementation, MSI Interrupts
- MSI-X interrupts
- defined, Device Interrupts
- implementation, MSI-X Interrupts
- multiplexing I/O, Multiplexing I/O on File Descriptors
- multiprocessor considerations, Context Management Model
- multithreading
- and condition variables, Initializing Condition Variables
- D_MP flag in cb_ops structure, cb_ops Structure
- execution environment, Multithreaded Execution Environment
- and locking primitives, Locking Primitives
- thread synchronization, Condition Variables in Thread Synchronization
- mutex
- functions, Setting Up Mutexes
- locks, Mutual-Exclusion Locks
- manipulating, Kernel Thread Control and Synchronization Functions
related panics, Potential Locking Pitfalls
- routines, Mutual-Exclusion Locks
- mutex_enter() function, High-Level Interrupts
- mutex_exit() function, High-Level Interrupts
- mutex_init() function, Registering Drivers to Gain Device Access
- mutex_owned() function, example of, Use mutex_owned() to Validate and Document Locking Requirements
- mutual-exclusion locks, See mutex
N
- name property, description of, Binding a Driver to a Device
- naming
- unique prefix for driver symbols
- What Is a Device Driver Entry Point?
- Use a Unique Prefix to Avoid Kernel Symbol Collisions
- Nblocks property, definition, Device Sizes
- nblocks property, deprecated, Device Sizes
- nblocks property, use in block device drivers, Block Device Autoconfiguration
- Nblocks property, use in block device drivers, Block Device Autoconfiguration
- nbytes argument, uiomove(), changes to, uiomove() Argument Changes
- network drivers
- testing, Network Drivers
- using GLD, Drivers for Network Devices
- network statistics
- DL_ETHER, Network Statistics
- gld_stats, Network Statistics
- gldm_get_stats(), Network Statistics
- kstat structures, Network Statistics
- nexus, See bus nexus device drivers
- nexus driver, USB Client Drivers
- nexus nodes, Fault Injection
- no-involuntary-power-cycles property, Device Power State Transitions
- nvlist_alloc structure, description of, Defining Event Attributes
O
P
- packaging, Driver Packaging
- packet processing
- Ethernet V2, Type DL_ETHER: Ethernet V2 and ISO 8802-3 (IEEE 802.3)
- ISO 8802-3 (IEEE 802.3), Type DL_ETHER: Ethernet V2 and ISO 8802-3 (IEEE 802.3)
- partial store ordering, Partial Store Ordering (PSO)
- PCI bus, PCI Local Bus
- configuration address space, PCI Configuration Address Space
- configuration base address registers, PCI Configuration Base Address Registers
- hardware configuration files, PCI Hardware Configuration Files
- I/O address space, PCI I/O Address Space
- memory address space, PCI Memory Address Space
- PCI configuration functions, alternate access mechanisms, Programmed I/O Functions
- PCI devices, PCI Local Bus
- PCI dual address cycles, DMA Isolation
- pci_ereport_post() function
- Reporting Errors
- Registering an Error Handler
- Fault Management Data and Status Structure
- pci_ereport_setup() function
- Declaring Fault Management Capabilities
- Reporting Errors
- pci_ereport_teardown() function
- Cleaning Up Fault Management Resources
- Reporting Errors
- physical DMA, Types of Host Platform DMA
- physio() function, description of, DMA Transfers (Synchronous)
- pipe, alternate setting, Modifying or Getting the Alternate Setting
- pipes
- closing, Closing Pipes
- default control
- Registering Drivers to Gain Device Access
- The Default Pipe
- flushing, Flushing Pipes
- mutex initialization, Registering Drivers to Gain Device Access
- opening, Opening Pipes
- policy, Synchronous and Asynchronous Transfers and Callbacks
- USB device communication, Device Communication
- USB devices, How USB Devices Appear to the System
- use before attach(), Before the Client Driver Is Attached
- pixel depth mode, Solaris Consoles and the Kernel Terminal Emulator
- pkgadd command, Installing the Test Harness
- pm_busy_component() function
- Device Power Management
- Device Power Management
- pm_idle_component() function
- Device Power Management
- Device Power Management
- pm_lower_power() function, Device Power Management
- pm_raise_power() function
- Device Power Management
- Device Power Management
- .po message files, Message IDs and Dictionary Files
- polled I/O interfaces
- Polled I/O Interfaces
- Implementing Polled I/O in Console Frame Buffer Drivers
- postmortem debugging, Postmortem Debugging
- power.conf file, See /etc/power.conf file
- power cycle, Device Power State Transitions
- power() entry point
- Device Power Management
- Device Power Management
- power management
- See also device power management
- See also system power management
- flow of control, Power Management Flow of Control
- USB devices, Power Management
- power management functions, Power Management Functions
- deprecated, Power Management Functions
- Predictive Self-Healing, What Is Predictive Self-Healing?
- See also fault management
- prefix
- unique prefix for driver symbols
- What Is a Device Driver Entry Point?
- Use a Unique Prefix to Avoid Kernel Symbol Collisions
- print() entry point, block drivers, print() Entry Point (Block Drivers)
- printing functions, Kernel Logging and Printing Functions
- printing messages, Returning Errors
- probe() entry point
- description of, probe() Entry Point
- SCSI target drivers, probe() Entry Point (SCSI Target Drivers)
- processor issues
- SPARC
- SPARC Processor Issues
- SPARC Register Windows
- SPARC Multiply and Divide Instructions
- x86, x86 Processor Issues
- programmed I/O, Programmed I/O Transfers
- use with DDI access routines, Exclusive Use of DDI Access Handles
- programmed I/O functions, Programmed I/O Functions
- deprecated, Programmed I/O Functions
- PROM commands, Open Boot PROM 3
- prop_op() entry point, description of, prop_op() Entry Point
- properties
- class property, Hardware Configuration File
- ddi_prop_op, prop_op() Entry Point
- device node name property, Binding a Driver to a Device
- LDI, Retrieving Target Device Property Values
- nblocks property, Block Device Autoconfiguration
- Nblocks property, Block Device Autoconfiguration
- nblocks property, Device Sizes
- Nblocks property, Device Sizes
- no-involuntary-power-cycles, Device Power State Transitions
- overview
- Device Properties
- Device Properties
- pm-hardware-state property
- Hardware State
- attach() Entry Point
- attach() Entry Point (SCSI Target Drivers)
- prtconf, Looking Up Properties
- reg property, Hardware State
- removable-media, Power Management Dependencies
- reporting device properties, prop_op() Entry Point
- SCSI HBA properties, HBA Configuration Properties
- SCSI target driver, x86 Target Driver Configuration Properties
- size property, Character Device Autoconfiguration
- types of, Device Properties
- property functions, Property Functions
- prtconf command
- displaying device names, Compatible Device Names
- displaying interfaces, Devices With Multiple Interfaces
- displaying kernel device usage information, Print System Configuration Command Interfaces
- displaying properties, Looking Up Properties
- displaying the bound driver, Compatible Device Names
- displaying the device tree, prtconf Command
- pseudo device driver, What Is a Device Driver?
- putnext() function, Thread Interaction
|