JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Writing Device Drivers
search filter icon
search icon

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

Numbers and Symbols

A

B

C

D

E

F

G

H

I

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

M

M_ERROR, Thread Interaction
mac_alloc() function, GLDv3 MAC Registration Functions
mac_callbacks MAC entry points structure, GLDv3 MAC Registration Data Structures
mac_capab_lso() structure, Large Segment (or Send) Offload
mac_fini_ops() function, GLDv3 MAC Registration Functions
mac_hcksum_get() function
Hardware Checksum Offload
Transmit Data Path
mac_hcksum_set() function
Hardware Checksum Offload
Receive Data Path
mac_init_ops() function, GLDv3 MAC Registration Functions
mac_link_update() function, GLDv3 State Change Notifications
mac_lso_get() function
Large Segment (or Send) Offload
Transmit Data Path
mac_register() function, GLDv3 MAC Registration Functions
mac_register MAC registration information structure
GLDv3 MAC Registration Functions
GLDv3 MAC Registration Data Structures
mac_rx() function, Receive Data Path
mac_tx_update() function
Transmit Data Path
GLDv3 State Change Notifications
mac_unregister() function, GLDv3 MAC Registration Functions
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
mc_getcapab() entry point, GLDv3 Capabilities
mc_getprop() entry point, GLDv3 Properties
mc_getstat() entry point, GLDv3 Network Statistics
mc_propinfo() entry point, GLDv3 Properties
mc_setprop() entry point, GLDv3 Properties
mc_tx() entry point, Transmit Data Path
mc_unicst() entry point, Receive Data Path
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
mod_install() function, network drivers, GLDv3 MAC Registration Functions
mod_remove() function, network drivers, GLDv3 MAC Registration Functions
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, GLDv2 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