Follow Techotopia on Twitter

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

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions

  




 

 

Table of Contents

  1. Document Information

  2. Preface

  3. What's New

  4. Who Should Use This Book

  5. How This Book Is Organized

  6. Related Books and Papers

  7. Documentation, Support, and Training

  8. Typographic Conventions

  9. Shell Prompts in Command Examples

  10. Designing Device Drivers for the Solaris Platform

  11. Overview of Solaris Device Drivers

  12. Device Driver Basics

  13. Device Driver Entry Points

  14. Considerations in Device Driver Design

  15. Solaris Kernel and Device Tree

  16. What Is the Kernel?

  17. Overview of the Device Tree

  18. Multithreading

  19. Locking Primitives

  20. Thread Synchronization

  21. Choosing a Locking Scheme

  22. Properties

  23. Device Properties

  24. Managing Events and Queueing Tasks

  25. Managing Events

  26. Queueing Tasks

  27. Driver Autoconfiguration

  28. Driver Loading and Unloading

  29. Data Structures Required for Drivers

  30. Loadable Driver Interfaces

  31. Device Configuration Concepts

  32. Using Device IDs

  33. Device Access: Programmed I/O

  34. Device Memory

  35. Device Access Functions

  36. Interrupt Handlers

  37. Interrupt Handler Overview

  38. Device Interrupts

  39. DDI Interrupt Functions

  40. Registering Interrupts

  41. Interrupt Handler Functionality

  42. Handling High-Level Interrupts

  43. Direct Memory Access (DMA)

  44. DMA Model

  45. Types of Device DMA

  46. Types of Host Platform DMA

  47. DMA Software Components: Handles, Windows, and Cookies

  48. DMA Operations

  49. Managing DMA Resources

  50. DMA Windows

  51. Mapping Device and Kernel Memory

  52. Memory Mapping Overview

  53. Exporting the Mapping

  54. Associating Device Memory With User Mappings

  55. Associating Kernel Memory With User Mappings

  56. Device Context Management

  57. Introduction to Device Context

  58. Context Management Operation

  59. Power Management

  60. Power Management Framework

  61. Device Power Management Model

  62. System Power Management Model

  63. Power Management Device Access Example

  64. Power Management Flow of Control

  65. Changes to Power Management Interfaces

  66. Hardening Solaris Drivers

  67. Sun Fault Management Architecture I/O Fault Services

  68. Defensive Programming Techniques for Solaris Device Drivers

  69. Driver Hardening Test Harness

  70. Layered Driver Interface (LDI)

  71. LDI Overview

  72. Kernel Interfaces

  73. User Interfaces

  74. Designing Specific Kinds of Device Drivers

  75. Drivers for Character Devices

  76. Overview of the Character Driver Structure

  77. Character Device Autoconfiguration

  78. Device Access (Character Drivers)

  79. I/O Request Handling

  80. Mapping Device Memory

  81. Multiplexing I/O on File Descriptors

  82. Miscellaneous I/O Control

  83. 32-bit and 64-bit Data Structure Macros

  84. Drivers for Block Devices

  85. Block Driver Structure Overview

  86. File I/O

  87. Block Device Autoconfiguration

  88. Controlling Device Access

  89. Synchronous Data Transfers (Block Drivers)

  90. Asynchronous Data Transfers (Block Drivers)

  91. dump() and print() Entry Points

  92. Disk Device Drivers

  93. SCSI Target Drivers

  94. Introduction to Target Drivers

  95. Sun Common SCSI Architecture Overview

  96. Hardware Configuration File

  97. Declarations and Data Structures

  98. Autoconfiguration for SCSI Target Drivers

  99. Resource Allocation

  100. Building and Transporting a Command

  101. SCSI Options

  102. SCSI Host Bus Adapter Drivers

  103. Introduction to Host Bus Adapter Drivers

  104. SCSI Interface

  105. SCSA HBA Interfaces

  106. HBA Driver Dependency and Configuration Issues

  107. Entry Points for SCSA HBA Drivers

  108. SCSI HBA Driver Specific Issues

  109. Support for Queuing

  110. Drivers for Network Devices

  111. Generic LAN Driver Overview

  112. Declarations and Data Structures

  113. GLD Arguments

  114. GLD Entry Points

  115. GLD Service Routines

  116. USB Drivers

  117. USB in the Solaris Environment

  118. Binding Client Drivers

  119. Basic Device Access

  120. Device Communication

  121. Device State Management

  122. Utility Functions

  123. Sample USB Device Driver

  124. Building a Device Driver

  125. Compiling, Loading, Packaging, and Testing Drivers

  126. Driver Development Summary

  127. Driver Code Layout

  128. Preparing for Driver Installation

  129. Installing, Updating, and Removing Drivers

  130. Loading and Unloading Drivers

  131. Driver Packaging

  132. Criteria for Testing Drivers

  133. Debugging, Testing, and Tuning Device Drivers

  134. Testing Drivers

  135. Debugging Tools

  136. Tuning Drivers

  137. Recommended Coding Practices

  138. Debugging Preparation Techniques

  139. Declaring a Variable Volatile

  140. Serviceability

  141. Appendixes

  142. Hardware Overview

  143. SPARC Processor Issues

  144. x86 Processor Issues

  145. Endianness

  146. Store Buffers

  147. System Memory Model

  148. Bus Architectures

  149. Bus Specifics

  150. Device Issues

  151. PROM on SPARC Machines

  152. Summary of Solaris DDI/DKI Services

  153. Module Functions

  154. Device Information Tree Node (dev_info_t) Functions

  155. Device (dev_t) Functions

  156. Property Functions

  157. Device Software State Functions

  158. Memory Allocation and Deallocation Functions

  159. Kernel Thread Control and Synchronization Functions

  160. Task Queue Management Functions

  161. Interrupt Functions

  162. Programmed I/O Functions

  163. Direct Memory Access (DMA) Functions

  164. User Space Access Functions

  165. User Process Event Functions

  166. User Process Information Functions

  167. User Application Kernel and Device Access Functions

  168. Time-Related Functions

  169. Power Management Functions

  170. Fault Management Functions

  171. Kernel Statistics Functions

  172. Kernel Logging and Printing Functions

  173. Buffered I/O Functions

  174. Virtual Memory Functions

  175. Device ID Functions

  176. SCSI Functions

  177. Resource Map Management Functions

  178. System Global State

  179. Utility Functions

  180. Making a Device Driver 64-Bit Ready

  181. Introduction to 64-Bit Driver Design

  182. General Conversion Steps

  183. Well Known ioctl Interfaces

  184. Console Frame Buffer Drivers

  185. Solaris Consoles and the Kernel Terminal Emulator

  186. Console Visual I/O Interfaces

  187. Implementing the Visual I/O Interfaces in Console Frame Buffer Drivers

  188. Implementing Polled I/O in Console Frame Buffer Drivers

  189. Frame Buffer Specific Configuration Module

  190. The X Window System Frame Buffer Specific DDX Module

  191. Developing, Testing, and Debugging Console Frame Buffer Drivers

  192. Index

  193. Index

  194. Index

  195. Index

  196. Index

  197. Index

  198. Index

  199. Index

  200. Index


 
 
  Published under the terms fo the Public Documentation License Version 1.01. Design by Interspire