On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com
How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy
Table of Contents
Document Information
Preface
What's New
Who Should Use This Book
How This Book Is Organized
Related Books and Papers
Documentation, Support, and Training
Typographic Conventions
Shell Prompts in Command Examples
Designing Device Drivers for the Solaris Platform
Overview of Solaris Device Drivers
Device Driver Basics
Device Driver Entry Points
Considerations in Device Driver Design
Solaris Kernel and Device Tree
What Is the Kernel?
Overview of the Device Tree
Multithreading
Locking Primitives
Thread Synchronization
Choosing a Locking Scheme
Properties
Device Properties
Managing Events and Queueing Tasks
Managing Events
Queueing Tasks
Driver Autoconfiguration
Driver Loading and Unloading
Data Structures Required for Drivers
Loadable Driver Interfaces
Device Configuration Concepts
Using Device IDs
Device Access: Programmed I/O
Device Memory
Device Access Functions
Interrupt Handlers
Interrupt Handler Overview
Device Interrupts
DDI Interrupt Functions
Registering Interrupts
Interrupt Handler Functionality
Handling High-Level Interrupts
Direct Memory Access (DMA)
DMA Model
Types of Device DMA
Types of Host Platform DMA
DMA Software Components: Handles, Windows, and Cookies
DMA Operations
Managing DMA Resources
DMA Windows
Mapping Device and Kernel Memory
Memory Mapping Overview
Exporting the Mapping
Associating Device Memory With User Mappings
Associating Kernel Memory With User Mappings
Device Context Management
Introduction to Device Context
Context Management Operation
Power Management
Power Management Framework
Device Power Management Model
System Power Management Model
Power Management Device Access Example
Power Management Flow of Control
Changes to Power Management Interfaces
Hardening Solaris Drivers
Sun Fault Management Architecture I/O Fault Services
Defensive Programming Techniques for Solaris Device Drivers
Driver Hardening Test Harness
Layered Driver Interface (LDI)
LDI Overview
Kernel Interfaces
User Interfaces
Designing Specific Kinds of Device Drivers
Drivers for Character Devices
Overview of the Character Driver Structure
Character Device Autoconfiguration
Device Access (Character Drivers)
I/O Request Handling
Mapping Device Memory
Multiplexing I/O on File Descriptors
Miscellaneous I/O Control
32-bit and 64-bit Data Structure Macros
Drivers for Block Devices
Block Driver Structure Overview
File I/O
Block Device Autoconfiguration
Controlling Device Access
Synchronous Data Transfers (Block Drivers)
Asynchronous Data Transfers (Block Drivers)
dump() and print() Entry Points
Disk Device Drivers
SCSI Target Drivers
Introduction to Target Drivers
Sun Common SCSI Architecture Overview
Hardware Configuration File
Declarations and Data Structures
Autoconfiguration for SCSI Target Drivers
Resource Allocation
Building and Transporting a Command
SCSI Options
SCSI Host Bus Adapter Drivers
Introduction to Host Bus Adapter Drivers
SCSI Interface
SCSA HBA Interfaces
HBA Driver Dependency and Configuration Issues
Entry Points for SCSA HBA Drivers
SCSI HBA Driver Specific Issues
Support for Queuing
Drivers for Network Devices
Generic LAN Driver Overview
Declarations and Data Structures
GLD Arguments
GLD Entry Points
GLD Service Routines
USB Drivers
USB in the Solaris Environment
Binding Client Drivers
Basic Device Access
Device Communication
Device State Management
Utility Functions
Sample USB Device Driver
Building a Device Driver
Compiling, Loading, Packaging, and Testing Drivers
Driver Development Summary
Driver Code Layout
Preparing for Driver Installation
Installing, Updating, and Removing Drivers
Loading and Unloading Drivers
Driver Packaging
Criteria for Testing Drivers
Debugging, Testing, and Tuning Device Drivers
Testing Drivers
Debugging Tools
Tuning Drivers
Recommended Coding Practices
Debugging Preparation Techniques
Declaring a Variable Volatile
Serviceability
Appendixes
Hardware Overview
SPARC Processor Issues
x86 Processor Issues
Endianness
Store Buffers
System Memory Model
Bus Architectures
Bus Specifics
Device Issues
PROM on SPARC Machines
Summary of Solaris DDI/DKI Services
Module Functions
Device Information Tree Node (dev_info_t) Functions
Device (dev_t) Functions
Property Functions
Device Software State Functions
Memory Allocation and Deallocation Functions
Kernel Thread Control and Synchronization Functions
Task Queue Management Functions
Interrupt Functions
Programmed I/O Functions
Direct Memory Access (DMA) Functions
User Space Access Functions
User Process Event Functions
User Process Information Functions
User Application Kernel and Device Access Functions
Time-Related Functions
Power Management Functions
Fault Management Functions
Kernel Statistics Functions
Kernel Logging and Printing Functions
Buffered I/O Functions
Virtual Memory Functions
Device ID Functions
SCSI Functions
Resource Map Management Functions
System Global State
Utility Functions
Making a Device Driver 64-Bit Ready
Introduction to 64-Bit Driver Design
General Conversion Steps
Well Known ioctl Interfaces
Console Frame Buffer Drivers
Solaris Consoles and the Kernel Terminal Emulator
Console Visual I/O Interfaces
Implementing the Visual I/O Interfaces in Console Frame Buffer Drivers
Implementing Polled I/O in Console Frame Buffer Drivers
Frame Buffer Specific Configuration Module
The X Window System Frame Buffer Specific DDX Module
Developing, Testing, and Debugging Console Frame Buffer Drivers
Index
Index
Index
Index
Index
Index
Index
Index
Index
Published under the terms fo the Public Documentation License Version 1.01.
Design by Interspire
x